如何在RecyclerView中更改单个项目而不更改其他布局

时间:2019-02-08 00:57:08

标签: android android-recyclerview

我试图在单击时在RecyclerView中切换单个项目的背景颜色。我在实现OnClickListener的ViewHolder的onClick函数中执行此操作。这是onClick实施:

int position = getLayoutPosition();
if (selected.containsKey(position)) {
    view.setBackgroundColor(context.getResources().getColor(R.color.white));
    selected.remove(position);
} else {
    view.setBackgroundColor(context.getResources().getColor(R.color.highlight));
    selected.put(position, view);
}

当我在填充的RecyclerView中对此进行测试时,就会出现问题。如果有很多项目,则从一开始选择一项还会突出显示列表中其他看不见的项目。其他突出显示的视图不会添加到“选定”的地图中。同样,从选定的视图滚动离开并返回到它们之后,它们有时会更改颜色。为什么会发生这种情况,我该如何解决?

1 个答案:

答案 0 :(得分:0)

这是视图被回收的副作用。它们实际上是被重用的。只要确保在绑定视图时将背景颜色显式设置为默认颜色即可。那应该做。