ListView中CheckBox错乱解决
思路:
ListView在复用的时候会出现很多问题,CheckBox状态会出现错乱,解决思路:
1.使用Map集合的键值对的形式来存放position位置上CheckBox的状态
2.监听CheckBox的状态改变Listener,如果选中就往Map中添加一个position,true 如果取消,则将map中对应的键值对移除。
直接代码:
private Map<Integer, Boolean> isCheckMap = new HashMap<Integer, Boolean>();
holder.check,setTag(position);
if (isCheckMap!= null && isCheckMap.containsKey(position)) {
holder.checkBox.setChecked(isCheckMap.get(position));
}else {
holder.checkBox.setChecked(false);
} holder.checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked)
{
//将选中的放入hashmap中
isCheckMap.put(position, isChecked);
}
else
{
//取消选中的则剔除
isCheckMap.remove(position);
}
}
});