首页 > 解决方案 > Android - 在 RecyclerView 中滚动时颜色重复

问题描述

我有一个 RecyclerView,其中选定数量的项目显示不同的背景颜色。

它给了我很多不同颜色的观点。

我使用适配器的位置来改变颜色,后来我发现滚动时位置发生了变化。

所以我给 ArrayList 的每个对象一个唯一的代码。如果唯一代码与给定代码匹配,我让程序更改背景颜色。

像,

    uniqueCode = 5;

public void onBindViewHolder(//..){

    Object object = objectArrayList.get(i);

    if(object.uniqueCode() == uniqueCode  ){
        holder.layout.setBackgroundColor(//....);
    }
}

但是我仍然得到一些视图更改滚动时的背景颜色,这与该唯一 ID 不匹配。

这个问题的解决方案是什么?

标签: androidscrollandroid-recyclerviewrepeat

解决方案


如果我理解正确,则有多个具有“独特”颜色的单元格,但它不应该。发生这种情况是因为您从未将布局的背景重置为默认颜色。

if(object.uniqueCode() == uniqueCode){
    holder.layout.setBackgroundColor(/*unique color*/);
}
else{
    holder.layout.setBackgroundColor(/*default color*/);
}

推荐阅读