我有一个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);
}
}