java - 项目背景更改不正确。日志显示正确的值。如何解决?
问题描述
通过多选选择产品后,我试图在适配器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());
}
...
我只想更改选定产品的背景颜色。
解决方案
对于您的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
}
推荐阅读
- sql - SQL 计算 max(x) 和 min(x)+y 之间的 x
- excel - 运行代码后,范围值发生变化并出现错误 REF
- c# - 即使应用程序关闭 SQL C#,如何保持用户登录
- javascript - React Context API 功能组件
- git - 尽管没有进行任何更改,但 Git 本地主机仍处于领先地位
- javascript - 如何在反应中使用 Jest 进行异步按钮单击
- python - 尝试使用 XPath 查询从属性中提取数据时获取空列表
- python - Pandas DataFrame 在特定日期时间之前出现的列中数据的平均值
- python-3.x - 使整个 tkinter 窗口变暗
- jquery - 在数据表中显示下拉列表