今天的需求是,一个带有checkBox的listView列表,通过点击全选,listView中每一个Item的checkBox项都选择上,反之,则取消全部。
思路: listView是负责show数据的,所以我们尽量不在数据适配器里操作数据。因为全选或者取消全选,单独选择一个或者多个都是操作数据,我们可以专门为这组数据准备个容器。选择了一条数据就往容器里添加一条,选择了全部就全部添加进去,若取消选择,就把容器中的数据全部倒出去。这么做还有一个原因时,listView在展示多条数据时,选择之后再滚动发现数据状态也可以保存。
实际操作:
- 定义一个List集合,selectList,这就是那个容器。
- 全选时:将服务器返回的数据通过for循环依次add 到selectList集合里。取消全部时,调用selectList.clear()即可;
- 选择单个或者多个时,直接调用selectList的add方法;在取消单个选择时,我们只要去selectList集合里判断下有没有当前对象。