android 中listview的使用

一个ListView通常有两个职责。

 (1)将数据填充到布局。

 (2)处理用户的选择点击等操作

一个ListView的创建需要3个元素。

  (1)ListView中的每一列的View。

  (2)填入View的数据或者图片等。

  (3)连接数据与ListView的适配器

适配器 是一个连接数据和AdapterView(ListView就是一个典型的AdapterView,后面还会学习其他的)的桥梁,通过它能有效地实现数据与AdapterView的分离设置,使AdapterView与数据的绑定更加简便,修改更加方便。
常用的适配器:这里写图片描述

一,使用ArrayAdapter创ListView

 使用的步骤:

(1)定义一个数组来存放ListView中item的内容。
(2)通过实现ArrayAdapter的构造函数来创建一个ArrayAdapter的对象。
(3)通过ListView的setAdapter()方法绑定ArrayAdapter。

具体代码如下(包括解释)

public class MainActivity extends AppCompatActivity {

    private static final String[]
    strs=new String[]
            {
        "first", "second", "third", "fourth", "fifth"
    }
    ;//定义一个String数组用来显示ListView的内容
    private ListView lv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        lv=(ListView)findViewById(R.id.lv);
        lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,strs));
        //ArrayAdapter有多个构造函数,这是最常用的一种
        //第一个参数为上下文,第二个参数为一个包含TextView,用来填充ListView的每一行的布局资源ID。
        // 第三个参数为ListView的内容。其中第二个参数可以自定义一个layout
        lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

        //处理用户的操作,绑定一个点击监听器,点击后在标题栏显示点击的行数。
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                                    long arg3) {
                //点击后在标题上显示点击了第几行
                setTitle("你点击了第" + arg2 + "行");
            }
        });
    }
}

注:
android.R.layout.simple_list_item_1只是我们使用Android提供的资源其中一种资源。
(1)android.R.layout.simple_list_item_checked实现带选择框的ListView
(2)android.R.layout.simple_list_item_multiple_choice这个资源实现带CheckBox的ListView
(3)android.R.layout.simple_list_item_single_choice这个资源实现带RadioButton的ListView。
(以上几种需要使用setChoiceMode()方法设定选择为多选还是单选,否则将不能实现选择效果)

二,使用SimpleAdapter创建ListView
步骤:使用SimpleAdapter的步骤。

 (1)根据需要定义ListView每行所实现的布局。

 (2)定义一个HashMap构成的列表,将数据以键值对的方式存放在里面。

 (3)构造SimpleAdapter对象。

 (4)将LsitView绑定到SimpleAdapter上。
private ListView lv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        lv = (ListView) findViewById(R.id.lv);
/*定义一个动态数组*/
        ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String,     Object>>();
/*在数组中存放数据*/
        for(int i=0;i<10;i++)
        {
            HashMap<String, Object> map = new HashMap<String, Object>();
            map.put("ItemImage", R.drawable.icon);//加入图片
            map.put("ItemTitle", "第"+i+"行");
            map.put("ItemText", "这是第"+i+"行");
            listItem.add(map);
        }

        SimpleAdapter mSimpleAdapter = new SimpleAdapter(this,listItem,//需要绑定的数据
                R.layout.item,//每一行的布局
//动态数组中的数据源的键对应到定义布局的View中
                new String[] {"ItemImage","ItemTitle", "ItemText"},
                new int[] {R.id.ItemImage,R.id.ItemTitle,R.id.ItemText}
        );

        lv.setAdapter(mSimpleAdapter);//为ListView绑定适配器

        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                                   long arg3) {
                setTitle("你点击了第"+arg2+"行");//设置标题栏显示点击的行

            }
        });
    }
}

效果如下:这里写图片描述

其中:使用simpleAdapter的数据一般都是用HashMap构成的列表,列表的每一节对应ListView的每一行。通过SimpleAdapter的构造函数,将HashMap的每个键的数据映射到布局文件中对应控件上。这个布局文件一般根据自己的需要来自己定义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值