Recyclerview列表使用CheckBox选中状态混乱

用recyclerview时候发现checkbox重复使用会导致OnCheckedChangeListener 出现一个不太友好的问题,问题是这样的:Recyclerview 会回收使用组件,回收checkbox的时候会触发OnCheckedChangeListener 事件,导致我们写的listener中的逻辑会被打乱。   比如我选中了一个checkbox,那么当view滚动导致这个checkbox 滑动出可视范围的时候 ,OnCheckedChangeListener事件会被触发,这样相当于自动把我选中的取消了。

解决方法

//在初始化checkBox状态和设置状态变化监听事件之前先把状态变化监听事件设置为null
holder.checkBox.setOnCheckedChangeListener(null);
//然后设置CheckBox状态
if(isChecked){
    holder.checkbox.setChecked(true);
}else{
    holder.checkbox.setChecked(false);
}
//然后设置状态变化监听事件
holder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListen
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked){
    if(isChecked){
        //...
    }else{
        //...
    }
  }
});

猜你喜欢

转载自blog.csdn.net/whb008/article/details/109924774