要取消先前选择的项目,您可以使用以下代码示例:
首先,在适配器的构造函数中添加一个状态变量来跟踪选中的项目。例如:
private SparseBooleanArray selectedItems;
public MyAdapter() {
selectedItems = new SparseBooleanArray();
}
然后,在您的ViewHolder类中,为每个项目设置点击监听器,并在点击项目时切换其选中状态。例如:
public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
// ...
public MyViewHolder(View itemView) {
super(itemView);
// ...
itemView.setOnClickListener(this);
}
@Override
public void onClick(View view) {
int position = getAdapterPosition();
if (selectedItems.get(position, false)) {
selectedItems.delete(position);
view.setBackgroundColor(Color.TRANSPARENT); // 取消选中时的背景
} else {
selectedItems.put(position, true);
view.setBackgroundColor(Color.LTGRAY); // 选中时的背景
}
}
}
接下来,您可以使用selectedItems数组来跟踪选中的项目。例如,在您的适配器中添加以下方法来获取选中的项目数量:
public int getSelectedItemCount() {
return selectedItems.size();
}
您还可以添加以下方法来获取选中的项目(位置):
public List getSelectedItems() {
List items = new ArrayList<>(selectedItems.size());
for (int i = 0; i < selectedItems.size(); i++) {
items.add(selectedItems.keyAt(i));
}
return items;
}
最后,您可以在您的活动中执行取消选择操作。例如:
List selectedItems = mAdapter.getSelectedItems();
for (int position : selectedItems) {
mAdapter.notifyItemChanged(position);
}
mAdapter.clearSelectedItems();
其中,clearSelectedItems()是您在适配器中添加的一个方法,用于清除选中的项目:
public void clearSelectedItems() {
selectedItems.clear();
}
这样,您就可以取消先前选择的项目了。