RecyclerView BackgroundColor

时间:2015-06-15 03:11:31

标签: android colors android-recyclerview

我使用RecyclerView来显示一些文本数据。我在其中选择了不同的卡片。

我想改变所选卡片的外观。

public void toggleSelection(int pos)
    {
        RecyclerView.ViewHolder viewHolder = recView.findViewHolderForPosition(pos);
        if (selectedItems.get(pos, false)) {
            selectedItems.delete(pos);
            viewHolder.itemView.setBackgroundColor(Color.WHITE);
        }
        else {
            selectedItems.put(pos, true);
            viewHolder.itemView.setBackgroundColor(Color.GREEN);
        }
        notifyItemChanged(pos);
    }

如果我使用这样的代码就可以了。我的onClick事件触发此代码,我的卡背景颜色变为绿色。

所以这是我的问题:向下滚动显示具有相同背景颜色的相同相对位置(但在列表中更下方)的其他卡片,即使它们未被选中;选择第一张卡并向下滚动到第八张卡是顶部可见卡的位置,显示第八张卡突出显示。

1 个答案:

答案 0 :(得分:6)

您需要在onBindViewHolder()方法中明确设置颜色。

回收者视图的名称表示回收视图,因此第0项被回收为您案例中的第8项。它们使用使用onCreateViewHolder()方法创建的相同视图持有者。每当其中任何一个进入视图时,都会调用onBindViewHolder()方法。

我建议你在数据模型中创建一个额外的布尔字段,告诉你是否突出显示了视图。您应该在toggleSelection()中切换它。 然后在onBindViewHolder()中检查此字段的值并相应地设置颜色。