Android带复选框的ListView多选实现

带复选框的 ListView,算是 Android 开发里蛮常见的一个场景了,尤其做多选操作的时候,比如设置项、批量删除、邮件筛选那类需求。你要做的,其实就是在 ListView 的每个 item 里加个 CheckBox,让它能响应用户点击,还不影响原来的滑动和选中逻辑。

核心是写个自定义 Adapter,你可以用BaseAdapter,在getView()里绑定数据的时候,把布局里那个CheckBox给拿出来控制。布局 XML 那边要注意,CheckBox要设置focusable="false"clickable="false",不然你点击 ListView 就没反应了,交互直接被拦截。

ListViewOnItemClickListener里做文章,用view.findViewById()拿到当前行的CheckBox,执行toggle()切换选中状态就行了,别忘了同步更新你维护的那个选中状态集合,比如用个SparseBooleanArray来存状态,效率也还不错。

要是你打算做全选/取消全选的功能,其实也简单,遍历一下数据源同步更新状态数组,再调用notifyDataSetChanged()刷新 ListView 就好啦。

哦对了,大列表性能不行?别忘了老朋友——ViewHolder模式,复用视图,少找 View,响应也快。整体流程不难,就是细节比较多,初次写建议多打点 Log 看下状态变化。

要是你还想深入,推荐几个相关文章,像这篇讲 ListView 带 checkbox 全选、取消的,还有这个 BaseAdapter 实现增删查的,看完思路更清晰。

如果你正好要实现批量操作、用户多选功能,这套带复选框的 ListView套路你可以试试看,挺实用的。

rar
CheckBoxList.rar 预估大小:53个文件
folder
CheckBoxList 文件夹
folder
bin 文件夹
file
classes.dex 315KB
folder
res 文件夹
folder
drawable-ldpi 文件夹
file
ic_launcher.png 1KB
folder
drawable-hdpi 文件夹
file
ic_launcher.png 113B
file
ic_action_search.png 409B
folder
drawable-xhdpi 文件夹
file
ic_launcher.png 2KB
file
ic_action_search.png 491B
folder
drawable-mdpi 文件夹
file
ic_launcher.png 110B
file
ic_action_search.png 311B
folder
classes 文件夹
folder
com 文件夹
folder
my 文件夹
folder
checkboxlist 文件夹
file
MainActivity.class 4KB
file
BuildConfig.class 347B
file
CBoxListViewAdapter.class 2KB
file
MainActivity$3.class 1KB
file
MainActivity$2.class 1007B
file
MainActivity$1.class 2KB
file
R$layout.class 448B
file
R$id.class 577B
file
R$drawable.class 450B
file
CBoxListViewData.class 766B
file
R$attr.class 343B
file
R$menu.class 400B
file
R.class 634B
file
R$string.class 516B
file
R$style.class 398B
file
CBoxListViewAdapter$ViewHolder.class 760B
file
resources.ap_ 10KB
file
CheckBoxList.apk 144KB
file
AndroidManifest.xml 795B
folder
res 文件夹
folder
drawable-ldpi 文件夹
file
ic_launcher.png 1KB
folder
values-v11 文件夹
file
styles.xml 94B
folder
menu 文件夹
file
activity_main.xml 240B
folder
values-v14 文件夹
file
styles.xml 108B
folder
drawable-hdpi 文件夹
file
ic_launcher.png 100B
file
ic_action_search.png 3KB
folder
drawable-xhdpi 文件夹
file
ic_launcher.png 2KB
file
ic_action_search.png 3KB
folder
values 文件夹
file
strings.xml 248B
file
styles.xml 89B
folder
drawable-mdpi 文件夹
file
ic_launcher.png 88B
file
ic_action_search.png 3KB
folder
layout 文件夹
file
activity_main.xml 1KB
file
cbox_listview_item.xml 506B
file
proguard-project.txt 781B
file
ic_launcher-web.png 18KB
folder
assets 文件夹
folder
gen 文件夹
folder
com 文件夹
folder
my 文件夹
folder
checkboxlist 文件夹
file
BuildConfig.java 161B
file
R.java 1KB
folder
src 文件夹
folder
com 文件夹
folder
my 文件夹
folder
checkboxlist 文件夹
file
CBoxListViewAdapter.java 1KB
file
CBoxListViewData.java 381B
file
MainActivity.java 3KB
file
.project 848B
file
.classpath 364B
file
project.properties 563B
file
AndroidManifest.xml 795B
folder
libs 文件夹
file
android-support-v4.jar 330KB
...
rar 文件大小:597.66KB