每10行后标记多行,而不是在Recyclerview Viewholder中标记一行

时间:2019-05-11 23:51:14

标签: java android android-recyclerview

每当我通过API更新其属性之一时,我都在努力确保其背景具有颜色。值得注意的是,每隔10行,下一行就会变色。

在RecyclerViewAdapter上,我以正确的顺序根据API获得了所有项目,但是问题出在if语句上:不是被isfound或search等于1的对象,而是多个也接收背景颜色的对象。我该如何解决?这是必要的代码:

RecyclerviewAdapter

@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, final int position) {
    Item item=this.items.get(position);

    viewHolder.titleList.setText(item.getTitle());
    viewHolder.descriptionList.setText(item.getDescription());
    viewHolder.dateList.setText(item.getDate());

    if (item.isFound()==1){
        viewHolder.layoutList.setBackgroundColor(Color.parseColor("#60ad5e"));
    }

    if (item.isSearching()==1){
        viewHolder.layoutList.setBackgroundColor(Color.parseColor("#ff9d3f"));
    }

    viewHolder.layoutList.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Item item=items.get(position);
            Intent intent = new Intent(context, DetailActivity.class);
            intent.putExtra(EXTRA_MESSAGE, item);
            context.startActivity(intent);
        }
    });
}

recyclerview在XML的线性布局内,但可滚动。其他所有内容都可以在该代码内运行,单击列表中的某个项目,会带给我更多该项目的详细信息,依此类推。但这只是多个背景颜色而不是一个背景颜色的问题。

1 个答案:

答案 0 :(得分:1)

您可能应该合并if语句并添加一个else块。 RecyclerView中的视图在滚动时会重新使用,因此会重新命名,因此在未设置标志时需要将其重置为默认值。

if (item.isFound()==1){
    viewHolder.layoutList.setBackgroundColor(Color.parseColor("#60ad5e"));
} else if (item.isSearching()==1){
    viewHolder.layoutList.setBackgroundColor(Color.parseColor("#ff9d3f"));
} else {
    // reset the color back to default
}