项目背景更改不正确。日志显示正确的值。如何解决?

时间:2019-05-31 15:21:14

标签: java android android-recyclerview recycler-adapter

在通过多选选择产品后,我试图在适配器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());
        }

...

我只想更改选定产品的背景颜色。

1 个答案:

答案 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

    }