Android带复选框的ListView多选实现
带复选框的 ListView,算是 Android 开发里蛮常见的一个场景了,尤其做多选操作的时候,比如设置项、批量删除、邮件筛选那类需求。你要做的,其实就是在 ListView 的每个 item 里加个 CheckBox,让它能响应用户点击,还不影响原来的滑动和选中逻辑。
核心是写个自定义 Adapter,你可以用BaseAdapter
,在getView()
里绑定数据的时候,把布局里那个CheckBox
给拿出来控制。布局 XML 那边要注意,CheckBox
要设置focusable="false"
和clickable="false"
,不然你点击 ListView 就没反应了,交互直接被拦截。
在ListView
的OnItemClickListener
里做文章,用view.findViewById()
拿到当前行的CheckBox
,执行toggle()
切换选中状态就行了,别忘了同步更新你维护的那个选中状态集合,比如用个SparseBooleanArray
来存状态,效率也还不错。
要是你打算做全选/取消全选的功能,其实也简单,遍历一下数据源同步更新状态数组,再调用notifyDataSetChanged()
刷新 ListView 就好啦。
哦对了,大列表性能不行?别忘了老朋友——ViewHolder模式,复用视图,少找 View,响应也快。整体流程不难,就是细节比较多,初次写建议多打点 Log 看下状态变化。
要是你还想深入,推荐几个相关文章,像这篇讲 ListView 带 checkbox 全选、取消的,还有这个 BaseAdapter 实现增删查的,看完思路更清晰。
如果你正好要实现批量操作、用户多选功能,这套带复选框的 ListView套路你可以试试看,挺实用的。
CheckBoxList.rar
预估大小:53个文件
CheckBoxList
文件夹
bin
文件夹
classes.dex
315KB
res
文件夹
drawable-ldpi
文件夹
ic_launcher.png
1KB
drawable-hdpi
文件夹
ic_launcher.png
113B
ic_action_search.png
409B
drawable-xhdpi
文件夹
...
597.66KB
文件大小:
评论区