基本上,我有一个包含级别列表的recyclerview。但基本上,我希望某些项目有黑色背景,表明它们还没有被锁定。(有点像电子游戏)
我目前的方法:
@Override
public void onBindViewHolder(BracketsAdapter.ViewHolder viewHolder, int position) {
// Get the data model based on position
Bracket bracket = bracketsList.get(position);
int color = UserPreferences.getInstance().getBracket();
// Set item views based on your views and data model
TextView textView = viewHolder.nameTextView;
textView.setText(bracket.toString());
Log.d("Bracket level", ""+bracket.getId());
if(color < bracket.getId()) {
textView.setBackgroundResource(R.color.black); // suggests level is locked
}
}
这种方法的问题在于它最初起作用,但是当我向下滚动并备份时,不应着色的项目最终会被着色。为什么是这样?有没有更好的方法来实现这个?
答案 0 :(得分:1)
循环视图总是重用旧视图,因此您遇到了这个问题。要解决问题,每次调用bindViewHolder时都应该设置颜色,所以尝试这样做,
T
这样可以正常工作。