用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{ //... } } });