我有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);
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句