如何在Recyclerview中更改某些项目的视图背景?

时间:2017-07-20 15:53:17

标签: android android-recyclerview

基本上,我有一个包含级别列表的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
        }

    }

这种方法的问题在于它最初起作用,但是当我向下滚动并备份时,不应着色的项目最终会被着色。为什么是这样?有没有更好的方法来实现这个?

1 个答案:

答案 0 :(得分:1)

循环视图总是重用旧视图,因此您遇到了这个问题。要解决问题,每次调用bindViewHolder时都应该设置颜色,所以尝试这样做,

T

这样可以正常工作。