• Android ListViewview入门


    接着上文《Android 数据库的事务》,往person数据表中插入50条数据

        public void testAdd() throws Exception {
            PersonDao dao = new PersonDao(getContext());
            // .add("wangwu", "123", 50000);
            // dao.add("zhangsan", "234", 17000);
            int number = 857600001;
            Random random = new Random();
            for (int i = 0; i < 50; i++) {
                dao.add("wuyudong" + i, Long.toString(number + i),
                        random.nextInt(5000));
    
            }
        }

    常规方法显示数据

    首先不使用ListViewview,而是直接使用程序来呈现数据表中的数据,代码如下:

    package com.wuyudong.db;
    
    import java.util.List;
    
    import com.wuyudong.db.dao.PersonDao;
    import com.wuyudong.db.domain.Person;
    
    import android.os.Bundle;
    import android.text.style.LeadingMarginSpan;
    import android.widget.LinearLayout;
    import android.widget.TextView;
    import android.app.Activity;
    import android.graphics.Color;
    
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            LinearLayout ll_root = (LinearLayout)findViewById(R.id.ll_root);
            PersonDao dao = new PersonDao(this);
            List<Person> persons = dao.findAll();
            for (Person person : persons) {
                String info = person.toString();
                TextView tv = new TextView(this);
                tv.setTextSize(20);
                tv.setTextColor(Color.BLACK);
                tv.setText(info);
                ll_root.addView(tv);
            }
        }
    }

    activity_main.xml中的代码如下:

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    
        <LinearLayout
            android:id="@+id/ll_root"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            tools:context=".MainActivity" >
        </LinearLayout>
    
    </ScrollView>

    运行结果如下图:

    使用ListView显示数据

    数据显示(listview)

    需求: 把数据库的内容全部显示在界面上

    符合MVC模型

    m: model 数据模型 -- Person 

    v: view 视图 -- ListView

    c: controller 控制器 --Adapter 数据适配器


    下面使用ListViewview来实现这个功能

    修改activity_main.xml中的代码如下

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/ll_root"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".MainActivity" >
    
        <ListView
            android:id="@+id/lv"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
        </ListView>
    
    </LinearLayout>

    界面如下:

    代码如下:

    package com.wuyudong.db;
    
    import java.util.List;
    
    import com.wuyudong.db.dao.PersonDao;
    import com.wuyudong.db.domain.Person;
    
    import android.os.Bundle;
    import android.text.style.LeadingMarginSpan;
    import android.util.Log;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.LinearLayout;
    import android.widget.ListView;
    import android.widget.TextView;
    import android.app.Activity;
    import android.graphics.Color;
    
    public class MainActivity extends Activity {
    
        private ListView lv;
        private List<Person> persons;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            PersonDao dao = new PersonDao(this);
            persons = dao.findAll();
            lv = (ListView) findViewById(R.id.lv);
    
            lv.setAdapter(new MyAdapter());
        }
    
        // 默认实现类形如: simplexxx, basexxx, defaultxxx
        private class MyAdapter extends BaseAdapter {
    
            private static final String TAG = "MyAdapter";
    
            /**
             * 控制ListView里面总共有多少条目
             */
            @Override
            public int getCount() {
                return persons.size(); // 条目个数==集合的size
            }
    
            @Override
            public Object getItem(int position) {
                // TODO Auto-generated method stub
                return null;
            }
    
            @Override
            public long getItemId(int position) {
                // TODO Auto-generated method stub
                return 0;
            }
    
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
    
                Log.i(TAG, "返回view对象,位置: " + position);
                TextView tv = new TextView(getApplicationContext());
                tv.setTextSize(20);
                tv.setTextColor(Color.BLACK);
                // 得到某个位置对应的person对象
                Person person = persons.get(position);
                tv.setText(person.toString());
    
                return tv;
            }
    
        }
    }

    运行结果如下:

    使用logcat过滤器查看:

    只显示5个位置,说明手机屏幕只能显示这么多,如果滑动手机屏幕的话,位置数量会越来越多

  • 相关阅读:
    jQuery dataType指定为json的问题
    C# Post数据和接收简单示例【转】
    搜集的关于领域驱动设计(DDD)的理论知识
    WCF:(400) Bad Request
    关于SQL生成随机字符串
    如何通过禁用按钮避免jQuery.ajax重复请求
    注册自定义HTTP Handlers
    Node.js+Express on IIS
    iframe在IE下不能写cookie的解决
    node.js从全局目录里加载module
  • 原文地址:https://www.cnblogs.com/wuyudong/p/5579216.html
Copyright © 2020-2023  润新知