我试图在单击时在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中对此进行测试时,就会出现问题。如果有很多项目,则从一开始选择一项还会突出显示列表中其他看不见的项目。其他突出显示的视图不会添加到“选定”的地图中。同样,从选定的视图滚动离开并返回到它们之后,它们有时会更改颜色。为什么会发生这种情况,我该如何解决?
答案 0 :(得分:0)
这是视图被回收的副作用。它们实际上是被重用的。只要确保在绑定视图时将背景颜色显式设置为默认颜色即可。那应该做。