1、CheckBox的设置
holder.mBinding.cb.setOnCheckedChangeListener(null);
holder.mBinding.cb.setChecked(mCheckStates.get(position, false));
holder.mBinding.cb.setOnCheckedChangeListener((buttonView, isChecked) -> {
if (isChecked) {
mCheckStates.put(position, true);
} else {
mCheckStates.delete(position);
}
if (mOnScenicCheckedListener != null) {
mOnScenicCheckedListener.onChecked(mCheckStates);
}
});
先清除监听器,再设置监听状态,再重新设置监听
2、使用集合来保存checkbox的状态
private SparseBooleanArray mCheckStates = new SparseBooleanArray();
holder.mBinding.cb.setOnCheckedChangeListener((buttonView, isChecked) -> {
if (isChecked) {
mCheckStates.put(position, true);
} else {
mCheckStates.delete(position);
}
if (mOnScenicCheckedListener != null) {
mOnScenicCheckedListener.onChecked(mCheckStates);
}
});