ListView的操作就一定会涉及到item和Adapter,我们还是先来实现这部分内容。 首先,写个item的xml布局,里面放置一个TextView和一个CheckBox。要注意的时候,这里我设置了CheckBox没有焦点,这样的话,无法单独点击checkbox,而是在点击listview的条目后,Checkbox会响应操作。
下面就写一个Adapter类,我们依然继承BaseAdapter类。这里我们使用一个HashMap的键值来记录checkbox在对应位置的选中状况,这是本例的实现的基础。
注释已经写的非常详尽了,通过
这行代码我们实现了设置CheckBox的选中状况。 那么我们只需要在点击事件中,控制isSelected的键值即可控制对应位置checkbox的选中了。 在Activity中我们除了放置一个ListView外,还放置了三个按钮,分别实现全选,取消和反选。 看下Activity类的代码:
代码中在item的点击事件中,直接调用 holder.cb.toggle(); 先改变CheckBox的状态,然后将值存进map记录下来 MyAdapter.getIsSelected().put(arg2, holder.cb.isChecked()); 而其他几个Button的点击事件,都是通过遍历list的长度来设置isSelected的值,进而通知listview根据已经变化的adapter刷新,来实现Checkbox的对应选中状态。因为对listview的处理中我们仍然使用了ViewHolder来优化ListView的效率(通过findViewById层层查找是比较耗时的,全面解析listview的),来看下运行效果: ![]() |
android UI进阶之实现listview中checkbox的多选与记录
最新推荐文章于 2025-08-11 21:24:53 发布
ListView的操作就一定会涉及到item和Adapter,我们还是先来实现这部分内容。 首先,写个item的xml布局,里面放置一个TextView和一个CheckBox。要注意的时候,这里我设置了CheckBox没有焦点,这样的话,无法单独点击checkbox,而是在点击listview的条目后,Checkbox会响应操作。 下面就写一个Adapter类,我们依然继承BaseAdapter类。这里我们使用一个HashMap的键值来记录checkbox在对应位置的选中状况,这是本例的实现的基础。 注释已经写的非常详尽了,通过 这行代码我们实现了设置CheckBox的选中状况。 那么我们只需要在点击事件中,控制isSelected的键值即可控制对应位置checkbox的选中了。 在Activity中我们除了放置一个ListView外,还放置了三个按钮,分别实现全选,取消和反选。 看下Activity类的代码: 代码中在item的点击事件中,直接调用 holder.cb.toggle(); 先改变CheckBox的状态,然后将值存进map记录下来 MyAdapter.getIsSelected().put(arg2, holder.cb.isChecked()); 而其他几个Button的点击事件,都是通过遍历list的长度来设置isSelected的值,进而通知listview根据已经变化的adapter刷新,来实现Checkbox的对应选中状态。因为对listview的处理中我们仍然使用了ViewHolder来优化ListView的效率(通过findViewById层层查找是比较耗时的,全面解析listview的),来看下运行效果: ![]() |