gpt4 book ai didi

android - 单击项目时更新 RecyclerView 中的 ImageView

转载 作者:行者123 更新时间:2023-11-29 23:53:11 24 4
gpt4 key购买 nike

我构建了一个 recyclerview,它在应用程序中显示来自 sqlite 数据库的项目。有一个带有图标的 ImageView ,当用户单击该项目时该图标会发生变化,因为该项目现在被视为已读。我存储此数据的 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 View 的缓存特性所致。

然后我添加了 notifyItemChanged(holder.getAdapterPosition()); 它改变了图像然后由于某种原因它变回未读图像。

我尝试在之后添加 notifyDataSetChanged(); 但它什么也没做,根本没有任何变化。

我不确定还能尝试什么?

最佳答案

在更改图像时添加此代码

reply.setStatus("read");

关于android - 单击项目时更新 RecyclerView 中的 ImageView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50674896/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com