首先看效果图:
这个是多选模式的
首先看Layout配置文件
其中的android:choiceMode="multipleChoice"选项就是设置选择模式的,
他包括几个选择
CHOICE_MODE_MULTIPLE(多选),
CHOICE_MODE_NONE(默认),
CHOICE_MODE_SINGLE(单选)
这里还设置了divider
下面看代码
通过android已定义的ArrayAdapter来显示数据,效果如图,
里面添加了三个事件:
1、OnTouchListener 这里通过触摸点来定位这个list的position信息,包括两个方法 pointToPosition和pointToRowId,注意这两个方法的不同点,就是在状态为-1的数据是否计算的区别
2、OnItemClickListener 这里获得当前选择的条目 通过方法getCheckItemIds来获得
3、Button的点击,这里动态增加一条数据项,可以发现通过
getCheckItemIds来标记的选择项是通过位置来记录的,跟选择选项的内容无关,所以这里如果数据是动态的就要
需要注意
还有一个问题,刚开始我
new ArrayAdapter<String>(ListViewDemo2.this,android.R.layout.simple_list_item_multiple_choice,list);
这里构造方法传入的是一个数组, 这样就发现了一个问题:
在我点击button当然是数组数据增加一条,但是发现list中的数据没有变化,
这个是为什么呢,难道是传入的集合跟
ArrayAdapter中的集合不是同一个引用,那又发现了
ArrayAdapter中有add和insert方法,但用了之后发现有
java.lang.UnsupportedOperationException这个异常,android居然还没实现,真是奇怪啊,
后来详细看了下
ArrayAdapter这个类的构造方法,原来传入list跟数据操作不同,如果是list直接用该引用,如果传入数组,就会通过Arrays.asList()来创造一个新List 这个区别就太大了, 后来只能把数组改成List 真是郁闷啊
这里使用的是
ArrayAdapter ,那很多时候我们需要自定义Adater的,可能会处于数据处理,效率优化的考虑,
如果自定义Adapter如下
这样定义显示的时候就会发现多选按钮框不见了,看
ArrayAdapter的实现就会发现,他所用的
android.R.layout.simple_list_item_multiple_choice布局用的是CheckedTextView组件
所以这里如果用TextVew就不会显示选择提示框,其实这个组件就是TextView的子类
这里我们要用这个组件
这样就正确显示了
分享到:
相关推荐
Android自定义adapter的listview代码
Android源码:ListView组件应用演示代码,layout的xml文件名需要全部小写。 ActivityList1: 1.初步介绍ListView这个组件。 2.初步介绍ArrayAdapter。 # simple_list_item_single_choice # ...
Android之自定义Adapter的ListView
代码中主要介绍ListView的三种配置方法,包括ArrayAdapter,SimpleAdapter和BaseAdapter
Android 程序技术 本节课程内容:ListView的介绍 1.1 ListView控件 1.2 常用数据适配器(Adapter) 数据展示控件 ListView控件 ListView控件 The ListView control ……> <ListView android:id="@+id/lv" android:...
android ListView item下载 ListView 进度条下载 ListView多个下载 android:ListView的局部刷新 Android中自定义Adapter实现ListView动态刷新进度条 android listview局部刷新和模拟应用下载
ListView中使用自定义Adapter及时更新数据
Android ListView 自定义adapter好友列表
详细介绍了android开发中的listview控件的使用
Android listview例子, 采用自定义Adapter:包含了Button控件
通过对ListView的运用,实现仿QQ的消息列表。涉及内容:ListView,Adapter
android ListView item下载 ListView 进度条下载 ListView多个下载 android:ListView的局部刷新 Android中自定义Adapter实现ListView动态刷新进度条 android listview局部刷新和模拟应用下载
android:listview联动
自定义适配器 和 SimpleAdater 配合listView使用 ,将数据展示在列表中 进阶2
采用ListView控件加自定义适配器实现listview列表控件,代码简单,逻辑清楚,可扩展性强,并且解决了OOM,亲测绝对可以使用
Android高手进阶教程之----Android中万能的BaseAdapter(Spinner,ListView,GridView)的使用!.doc Android高手进阶教程之----通过Location获取Address的使用.doc Android基础教程之----Android ProgressBar的使用.doc...
安卓listview自定义adapter包括demo和一些其他自定义绑定的代码
listview 自定义adapter的例子demo
这个是我写的一个自定义Adapter适配器,用来绑定数据到ListView上。我写的代码非常简单易懂