我有一个RecyclerView,其中每个列表项都有一个ImageButton,我在适配器的onBindViewHolder()中定义了这个图像:

    int myVote = getMyVote();
    if (myVote != 0) {
        Log.d("dbg", myVote + "");
        holder.ratingButton.setImageResource(R.drawable.ic_star_grey600_36dp);
    }

所以ratingbutton是列表项布局右下角的一个星。如果条件为myvote,则其形状将填充灰色(并相应地推送日志记录)。=0)表示满意。
问题是,当我向下滚动列表时,我可以看到其他星星变满,即使我在日志窗口中只能看到一条记录(对于正确的列表项)。此外,这个列表项与错误更改的按钮重复每5行,这是什么让我困惑。如果我更改mlistview.setitemviewcachesize(0);重复周期将更改为3,因此我们可以假设它以某种方式与recyclerview的缓存和回收机制有关。
求你了,帮我解决这个问题。谢谢!

最佳答案

尝试将代码更改为:

if (myVote != 0) {
        Log.d("dbg", myVote + "");
        holder.ratingButton.setImageResource(R.drawable.ic_star_grey600_36dp);
    } else {
        holder.ratingButton.setImageResource(int another resource);
    }
}

10-07 12:41