我使用FirestoreRecyclerAdapter,我想要更改所选的项目颜色。因为在firestoreAdapter中它只涉及onBindViewHolder()项目数据更改。单个项目替换它,但我想更改除选定项目之外的所有项目文本颜色。
我该怎么办?
感谢。
答案 0 :(得分:0)
然后反转你的逻辑。声明保留所点击项目的list
(存储索引,ID或您喜欢的任何内容),然后在onBindViewHolder()
中,如果点击的项目在list
中,则不执行任何操作,否则更改无论你想要什么。
当然,如果您允许在列表中插入/删除/更改,则必须更新此list
。
修改强>
要在评论中回答您的问题,首先必须设计逻辑以相应地更改onBindViewHolder()
中的颜色。然后,将onClickListener
设置为响应视图。最后,要刷新显示列表,请调用notifyDataSetChanged()
或类似方法。
@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {
// declaration and setup here
final index = position;
// Define the logic to change the color if clicked item is/not in the list
if (yourClickedItemList.contain(position)) {
// Change what you want
}
else {
// Change what you want if the item is not in the list
}
// Then set the click listener
viewHolder.yourItemLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (!yourClickedItemList.contain(index)) {
yourClickedItemList.add(index);
}
else {
// the list already contain that item
// do whatever you want here, like toggle off selection and remove from the list
}
// call to refresh your view
notifyDataSetChanged(); // or use notifyItemChanged() etc
}
}
}