每当我通过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的线性布局内,但可滚动。其他所有内容都可以在该代码内运行,单击列表中的某个项目,会带给我更多该项目的详细信息,依此类推。但这只是多个背景颜色而不是一个背景颜色的问题。
答案 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
}