在 RecyclerView 中单击时使用 Picasso 或任何图像加载器重新加载图像
Posted
技术标签:
【中文标题】在 RecyclerView 中单击时使用 Picasso 或任何图像加载器重新加载图像【英文标题】:Reload Image with Picasso or any Image-loader on click in RecycleView 【发布时间】:2019-10-20 21:49:34 【问题描述】:在 Recycleview 中更新图像
我正在开发聊天应用程序,当用户在 Recycleview 中单击 imageview 时,我正在将图像下载到本地存储,然后尝试使用 picasso 重新加载,然后 Recycleview 正在跳转到另一个位置。
注意:根据我的研发,我理解 Imageview 在重新加载时需要焦点。我不确定,请让我了解在特定位置在 Recycleview 中重新加载图像的最佳方法是什么,而不会像 whatsapp 在点击下载时在聊天屏幕中加载图像那样跳跃。
我正在使用以下方法来更新特定位置。
notifyItemChanged(position);
如果我尝试使用以下方法重新加载,那么没问题,但是从 URI
加载时可能会出现 OOM(内存不足) messageImageView.setImageURI(Uri.fromFile(fileImage));
messageImageView.setImageResource(R.drawable.icn_conv_clicktodownload);
问题案例:
Picasso.get().load(fileImage).resize(viewWidth, viewHeight).
centerCrop().into(messageImageView);
【问题讨论】:
尝试 notifyItemInserted() 或 notifyItemRangeInserted 而不是 notifyItemChanged @SachinSoma,谢谢,我也试过了,但仍然面临同样的问题。 【参考方案1】:试试这个...从这个链接引用的答案..here
// Save state
private Parcelable recyclerViewState;
recyclerViewState = recyclerView.getLayoutManager().onSaveInstanceState();
// Restore state
notifyItemChanged(position);
recyclerView.getLayoutManager().onRestoreInstanceState(recyclerViewState);
【讨论】:
你能解释一下为什么我应该保存recyclerView的状态来更新Viewholder中的图像..? 因为在 notifyItemChanged() 之后,您的 recyclerview 滚动到顶部位置。 我尝试了同样的方法,但它没有帮助我,我理解在视图中重新加载图片时它失去了焦点。我想了解如何获得 imageview 的焦点..?以上是关于在 RecyclerView 中单击时使用 Picasso 或任何图像加载器重新加载图像的主要内容,如果未能解决你的问题,请参考以下文章
单击后退按钮时,在 RecyclerView 中获得相同的项目位置
如何在单击 RecyclerView 项目时从一个片段移动到另一个片段