我尝试了很多次在RecyclerView上设置backgroundColor。但我尝试滚动然后背景被删除。所以我可以在RecyclerView中修复backgroundColor。请帮帮我。
或者我想要更改ForegroundColor。
我的问题视频 https://www.youtube.com/watch?v=C29qhPb44FE
我不知道原因......
答案 0 :(得分:0)
如果以编程方式设置背景颜色。您必须每次设置正常颜色和所选颜色。
RecyclerViews正在重复使用他们的观点。当一个项目离开屏幕时,它将被重复使用以提高回收者视图的性能。
在这种情况下,当一个以编程方式设置背景颜色并且项目离开屏幕时。它将在新项目中重复使用,背景颜色仍然与项目离开屏幕时相同。
答案 1 :(得分:0)
您首先需要了解RecyclerView的工作原理。
当您滚动单元格时,从屏幕中移出的视图将处于RECYCLED状态,随后将重复使用它们以显示传入视图。因此名称为RecyclerView。这样,视图将始终被回收和重用,从而节省内存。
你需要做的是这样的事情:
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
//mList and mSelectedObjects are array lists
View yourView = holder.itemView.findViewById(R.id.your_view);
Object object = mList.get(position);
yourView.setTag(object);
yourView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Object object = (Object) v.getTag();
if (mSelectedObjects.contains(object)) {
mSelectedObjects.remove(object);
v.setBackground(null);
} else {
mSelectedObjects.add(object);
v.setBackgroundColor(Color.GRAY);
}
}
});
}