Android 如何更改recyclerview中某些项目的视图背景?
所以本质上,我有一个recyclerview,它有一个级别列表。但本质上,我希望某些物品有一个黑色的背景,以表明它们还没有被锁定。(有点像电子游戏) 我目前的方法是:Android 如何更改recyclerview中某些项目的视图背景?,android,android-recyclerview,Android,Android Recyclerview,所以本质上,我有一个recyclerview,它有一个级别列表。但本质上,我希望某些物品有一个黑色的背景,以表明它们还没有被锁定。(有点像电子游戏) 我目前的方法是: @Override public void onBindViewHolder(BracketsAdapter.ViewHolder viewHolder, int position) { // Get the data model based on position Bracket brac
@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
}
}
@覆盖
BindViewHolder上的公共无效(括号Sadapter.ViewHolder ViewHolder,内部位置){
//根据位置获取数据模型
支架=支架列表获取(位置);
int color=UserPreferences.getInstance().getBracket();
//基于视图和数据模型设置项目视图
TextView TextView=viewHolder.nameTextView;
textView.setText(方括号.toString());
Log.d(“括号级别”,“括号+括号.getId());
if(颜色
这种方法的问题是,它最初是有效的,但当我向下滚动并备份时,不应该上色的项目最终会上色。为什么会这样?有更好的实现方法吗?回收视图总是重复使用旧视图,因此您会遇到这个问题,要解决这个问题,您应该在每次调用bindViewHolder时设置颜色,所以尝试这样做
if(color < bracket.getId()) {
textView.setBackgroundResource(R.color.black); // suggests level is locked
} else {
textView.setBackgroundResource(R.color.defaultcolor); // default color
}
if(颜色
这很好。抓得好。我应该读更多关于recyclerview的工作原理。