今天继续和大家分享涉及到listview的内容。在很多时候,我们会用到listview和checkbox配合来提供给用户一些选择操作。比如在一个清单页面,我们需要记录用户勾选了哪些条目。这个的实现并不太难,但是有很多朋友来问我如何实现,他们有遇到各种各样的问题,这里就一并写出来和大家一起分享。
ListView的操作就一定会涉及到item和Adapter,我们还是先来实现这部分内容。
首先,写个item的xml布局,里面放置一个TextView和一个CheckBox。要注意的时候,这里我设置了CheckBox没有焦点,这样的话,无法单独点击checkbox,而是在点击listview的条目后,Checkbox会响应操作。
下面就写一个Adapter类,我们依然继承BaseAdapter类。这里我们使用一个HashMap<Integer,boolean>的键值来记录checkbox在对应位置的选中状况,这是本例的实现的基础。
注释已经写的非常详尽了,通过
holder.cb.setChecked(getIsSelected().get(position));
这行代码我们实现了设置CheckBox的选中状况。
那么我们只需要在点击事件中,控制isSelected的键值即可控制对应位置checkbox的选中了。
在Activity中我们除了放置一个ListView外,还放置了三个按钮,分别实现全选,取消和反选。
看下Activity类的代码:
代码中在item的点击事件中,直接调用
先改变CheckBox的状态,然后将值存进map记录下来
MyAdapter.getIsSelected().put(arg2, holder.cb.isChecked());
而其他几个Button的点击事件,都是通过遍历list的长度来设置isSelected的值,进而通知listview根据已经变化的adapter刷新,来实现Checkbox的对应选中状态。因为对listview的处理中我们仍然使用了ViewHolder来优化ListView的效率(通过findViewById层层查找是比较耗时的,这里不了解的朋友可以看我另一篇博客android应用开发全程实录-你有多熟悉listview?,全面解析listview的)。
最后,来看下运行效果:
好了,就写到这里。相信大家都能明白了。这里要说下一个问题,有很多朋友留言或者发邮件要博客中的一些源码。我在这里声明下,我不会去发任何我觉得已经在博客里介绍的非常清楚的实例的源码,有些实例我已经把所有代码都贴出来了,还是有人要源码。。。我希望看我博客的朋友都能真正理解这个实例,能学到更多的知识,最好能有自己的改进然后再和大家一起分享。很多朋友现在已经习惯了拿别人的源码,功能类似的就直接搬到自己项目里,这是非常不好的习惯。动动手,多写写,你会学到更多。
分享到:
相关推荐
androidUI进阶之实现listview的下拉加载.pdf
listview+checkbox 多选
android_UI进阶之实现listview的下拉加载,实用简单
每个listview的每条item中都有多个checkbox,在项目中需要用到,所以写了个小demo,可以判断每个item中哪些checkbox被选中了。
该文档详细介绍了listView的分页加载
Android里ListView里面添加CheckBox实现多选,用上ViewHolder和ConvertView
listview +checkbox 实现单选、多选操作
CheckBox多选功能的实现 ListView与CheckBox CheckBox多选功能的实现 ListView与CheckBox
listview实现多线,用一个list记录选中状态
listview实现checkbox多选效果,可动态加载数据,完美融合.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
ListView中有一个属性:android:choiceMode,对应三个可选值: * singleChoice 单选 * multipleChoice 多选 ...在ListView的布局中设置了android:choiceMode属性后,item布局需要实现checkable,才有选中效果。
关于listview的操作五花八门,有下拉刷新,分级显示,分页列表,逐页加载等,以后会陆续和大家分享这些技术,今天讲下下拉加载这个功能的实现。最初的下拉加载应该是ios上的效果,现在很多应用如新浪微博等都加入了...
ListView 实现单选/多选的demo例子,欢迎指正
这个项目是Android studio的,eclipse的朋友可以复制一下资源就能用了。知识点:1、解决listView滚动时checkBox的选择状态会发生变化(絮乱);2、ListView的Item长按,点击时间并存,实现同一UI控件多需求响应各类...
(Android)五分钟让你轻松学会ListView单选和多选功能
listview实现checkbox多选效果,可动态加载数据,完美融合。
主要介绍了Android中ListView + CheckBox实现单选、多选效果,非常不错,具有参考借鉴价值,需要的朋友可以参考下
一个listview + checkbox 的多选反选取消的demo