主要是因为checkbox的状态被adapter的机制给改变了,要解决问题,需要做个处理,就是要在adapter中保存checkbox的点击状态。如下:
private Map<Integer,Boolean> map=new HashMap<>();// 存放已被选中的CheckBox
在getview中if (view == null) {}的大括号里加入下面处理即可
viewHolder.check_item.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked==true){
map.put(position,true);
}else {
map.remove(position);
}
}
});
if(map!=null&&map.containsKey(position)){
viewHolder.check_item.setChecked(true);
}else {
viewHolder.check_item.setChecked(false);
}
这是原博客大神的地址https://blog.csdn.net/w6980112/article/details/52457320