问题的描述
来看这个例子,我们有一个ListView,然后在这个ListView内有若干checkbox。
此时ListView有一个问题,即焦点失去的问题,这个问题会体现在什么场景下呢?
我们假设我们这个ListView内的CheckBox有多行,行数多到需要“垂直”滚屏来做翻页显示。
而此时我的操作为:
- 先把第一第二行选中;
- 然后我滚屏到下一页什么都不做;
- 再滚屏到第一页,我们会发觉在第一页之前我勾选的第一第二行的选中状态没了;
这个问题是一个很经典的ListView和内嵌控件抢焦点导致的问题,如以下截屏。
怎么处理呢?
很简单。看以下设计。
设计
- 我们设计一个private Map<Integer, Boolean> map = new HashMap<Integer, Boolean>()结构,用于记录每一次checkbox在被点击时当前的状态。此处的Key为Integer