android - 在项目单击时更新 RecyclerView 中的 ImageView
问题描述
我已经构建了一个 recyclerview,它显示应用程序中 sqlite db 中的项目。有一个带有图标的图像视图,当用户单击该项目时,该图标会发生变化,因为该项目现在被视为已读。我存储此数据的 sqlite 表有一个具有读取状态的列,默认情况下所有内容都是未读的,当用户单击和项目时,该状态更改为已读。
此状态是适配器类最初知道要使用哪个图标的方式。这部分一切正常。问题是当用户单击一个项目并且图标变为新的已读图标时,它又变回原来的未读图标。
@Override
public void onBindViewHolder(@NonNull final MyViewHolder holder, int position) {
final Reply reply = ReplyList.get(position);
if(reply.getStatus().equals("unread")){
holder.status.setImageResource(R.drawable.ic_unread);
holder.status.setColorFilter(context.getResources().getColor(R.color.red));
} else {
holder.status.setImageResource(R.drawable.ic_read);
holder.status.setColorFilter(context.getResources().getColor(R.color.green));
}
holder.name.setText(smsReply.getName());
holder.patientNumber.setText(smsReply.getNumber());
holder.dateReceived.setText(smsReply.getReceivedDate());
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View view) {
DBHandler db = new DBHandler(view.getContext());
db.changeReadStatus(smsReply.getId());
holder.status.setImageResource(R.drawable.ic_read);
holder.status.setColorFilter(context.getResources().getColor(R.color.green));
notifyItemChanged(holder.getAdapterPosition());
//notifyDataSetChanged();
}
我首先只是通过调用更改了图像
holder.status.setImageResource(R.drawable.ic_read);
holder.status.setColorFilter(context.getResources().getColor(R.color.green));
这一直有效,直到我滚动过去该项目,当我回到该项目时,图标已变回未读图标,我认为这是由于 recyclerview 视图的缓存性质。
然后我添加了notifyItemChanged(holder.getAdapterPosition());
哪个更改了图像,然后由于某种原因它又变回了未读的图像。
之后我尝试添加notifyDataSetChanged();
,但这根本没有任何作用,根本没有任何变化。
我不确定还能尝试什么?
解决方案
更改图像时添加此代码
回复.setStatus(“已读”);
推荐阅读
- r - dplyr`slice_max`插值不起作用
- html - 如何根据用户的选择更改滚动条颜色?
- swiftui - 在 swiftui 中绑定 GeometryReader
- android - 为什么我的 RecycleView 没有按预期工作
- java - Optaplanner 建模:更改 @PlanningEntityCollectionProperty 集合的大小
- reactjs - 在 React 中定位未定义的运行 Three.js 组件
- python-3.x - 使用 3d barplot 可视化 3d 地理数据
- amazon-eks - 缺少 Appmesh 网关和 NLB 的 X-Forwarded-For 标头
- pandoc - 如何在pandoc上垂直对齐表格?
- python - Python Pandas 对一组不同的列进行操作