要保存RecyclerView中Checkbox的状态,可以按照以下步骤进行操作:
SparseBooleanArray
对象,用于保存Checkbox的选中状态。private SparseBooleanArray checkedItems = new SparseBooleanArray();
OnCheckedChangeListener
,用于监听Checkbox的选中状态变化。holder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
checkedItems.put(position, isChecked);
}
});
onBindViewHolder
方法,在绑定数据的同时,设置Checkbox的选中状态。@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
// 设置数据
// ...
// 设置Checkbox的选中状态
holder.checkBox.setChecked(checkedItems.get(position));
}
getCheckedItems
,用于获取选中的Checkbox的位置。public List getCheckedItems() {
List checkedPositions = new ArrayList<>();
for (int i = 0; i < checkedItems.size(); i++) {
if (checkedItems.valueAt(i)) {
checkedPositions.add(checkedItems.keyAt(i));
}
}
return checkedPositions;
}
getCheckedItems
方法,获取选中的Checkbox的位置,并保存起来。List checkedPositions = adapter.getCheckedItems();
// 保存选中的位置
通过以上步骤,就可以实现在RecyclerView中保存Checkbox的状态了。