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);
                        }
                }
            });





原文地址:https://www.cnblogs.com/flyme2012/p/3944833.html