安卓开发(4):ListView的使用,arrayAdapter,simpleAdapter

ListView是安卓里面一个比较实用的部件,是安卓列表形式展示每一项内容,类似于微信的会话列表吧。

在布局里的用法比较简单:

安卓开发(4):ListView的使用,arrayAdapter,simpleAdapter

这样剧创建了一个空的列表,然后要在.java中填充数据。填充数据用到Adapter,常用的Adapter一般有ArrayAdapter、SimpleAdapter,但这两个功能都有限,自定义Adapter当然能满足更多需求。

ArrayAdapter

先上代码:
安卓开发(4):ListView的使用,arrayAdapter,simpleAdapter

operationList是你获得的ListView,operations是要放的数据,创建Adapter的参数有context上下文(MainActivity.this),textViewResourceId(资源id,代表一个textView,也可以使用系统提供的默认布局,即不用自己创建也可以),数组或List。

这个Adapter的缺点就是只能显示字符串,实现的功能比较单一。

SimpleAdapter

安卓开发(4):ListView的使用,arrayAdapter,simpleAdapter

这个是要显示的列表中每一项的布局R.layout.item,然后数据data是这样的:

安卓开发(4):ListView的使用,arrayAdapter,simpleAdapter

data是一个list,里面每一项都是键值对(Map表示),创建时:

安卓开发(4):ListView的使用,arrayAdapter,simpleAdapter

参数有:context,键值对数组,单项的布局资源,string数组(指明data中哪些键的值要取出来),布局中的部件id数组(跟上一个参数一一对应,上一个参数的每一个值对应这里每一个部件的值)

效果是这样的:

安卓开发(4):ListView的使用,arrayAdapter,simpleAdapter


接下来讲讲ListView的触发事件:

类似于button添加监听器:

安卓开发(4):ListView的使用,arrayAdapter,simpleAdapter

注意返回值i与l,i是点击的这一项在列表中的位置,l是这一项的id,这两种Adapter中i与l是相等的。

有一个小问题要注意的是长按item如果同时触发了短按事件,那就是长按事件中返回了true,改成false就好。

动态增删数据

可以对data(键值对数组)进行增删操作。但是同时要用Adapter来调用notifyDataSetChanged()才可以正常更新列表显示:

安卓开发(4):ListView的使用,arrayAdapter,simpleAdapter

但是不能把data指向一个新地址:

安卓开发(4):ListView的使用,arrayAdapter,simpleAdapter