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