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

 

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