Android RecyclerView+CheckBox 滚动后选择错乱问题解决

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章