更改FirestoreRecyclerAdapter单击的项目颜色

时间:2018-03-13 06:52:52

标签: android firebase google-cloud-firestore

我使用FirestoreRecyclerAdapter,我想要更改所选的项目颜色。因为在firestoreAdapter中它只涉及onBindViewHolder()项目数据更改。单个项目替换它,但我想更改除选定项目之外的所有项目文本颜色。

我该怎么办?

感谢。

1 个答案:

答案 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
        }
    }
}