在通过多选选择产品后,我试图在适配器recyclerview中添加项目背景颜色的更改,但是,在选择第二个及后续产品之后,背景颜色更改不正确。日志显示正确选择的产品,但是recyclerview中不同产品的背景随机变化。禁用多选并同时清除所选产品列表后,随机选择的商品的背景会继续发生变化。
...
@Override
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int position) {
...
if (dayOfNotification.after(expirationDateDt))
viewHolder.itemView.setBackgroundColor(resources.getColor(R.color.background_expired_products));
if (multiSelectList.contains(productList.get(position))) {
viewHolder.itemView.setBackgroundColor(resources.getColor(R.color.background_product_selected));
Log.d(String.valueOf(productList.get(position).getId()), productList.get(position).getName());
}
...
我只想更改选定产品的背景颜色。
答案 0 :(得分:0)
对于onBindViewHolder
方法中的情况,两种情况都必须设置背景if-else
。检查这里...
if (dayOfNotification.after(expirationDateDt)){
viewHolder.itemView.setBackgroundColor(resources.getColor(R.color.background_expired_products));
}
else{
viewHolder.itemView.setBackgroundColor(resources.getColor(R.color.background_not_expired_products));
//for not expired item color as background_not_expired_products
}
if (multiSelectList.contains(productList.get(position))) {
viewHolder.itemView.setBackgroundColor(resources.getColor(R.color.background_product_selected));
Log.d(String.valueOf(productList.get(position).getId()), productList.get(position).getName());
}
else{
viewHolder.itemView.setBackgroundColor(resources.getColor(R.color.background_product_not_selected));
//say background_product_not_selected as your color for not selected item
}