android - RecyclerView - 再次绑定(bind) View 持有者

标签 android android-recyclerview

TL,DR:我怎样才能强制回收器 View 再次调用 onBindViewHolder 方法,至少对于可见项目?

调用notifyDataSetChanged()会使列表滞后几毫秒,有没有更好的办法? 谢谢。

我有一个带有 ImageView 的布局。 每当为 ImageView 调用绑定(bind)时,我都会向服务器发送请求以获取图像。 加载图像时,我将位图保存在 ViewHolder 的 T 变量中。 在绑定(bind)方法中,我检查 variable.getBitmap() 是否为 null,如果是,我将设置 imageview。 现在,如果我滚动我的列表,图像将被加载,但如果没有, ImageView 仍然是空白的,因为没有再次调用 onBindViewHolder。

谢谢。

最佳答案

notifyDataSetChanged() 绝对是正确的方法。也许 notifyItemChanged() 更好,因为它只绑定(bind)所选项目。如果我答对了你的问题,那么你似乎在主线程上做了一些不应该在那里做的事情。请记住:切勿在主线程上执行可能冗长的操作,而应始终使用 AsyncTask 之类的东西。

我认为异步下载图像然后将其缓存是一种更好的方法,因此您不必在每次回收View 时都下载它。有它的库。

在加载图像时,您可以显示一个 ProgressBar 或其他提示用户图像正在加载的东西。

关于android - RecyclerView - 再次绑定(bind) View 持有者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29451768/

相关文章:

android - GCM - 不清楚应用程序更新的工作原理?

Android自定义字体问题

android - 如何在 onSaveInstanceState 上存储 recyclerview 数据

android - 如何在 Activity 中处理 recyclerview 的项目 View ?

android - 如何删除 'recycleview' 布局顶部的空间?

使用 gridview 和 RecyclerView 滚动的 android 布局

android - CloudJobTicket (CJT) 中的 vendor_id 是什么?

android - ionic 框架未能在Google Playstore中发布:Apache Cordova该漏洞已在Apache Cordova v.3.5.1中修复。

java - 如何处理执行 doInBackground() 时发生错误的异常

Android DiffUtil.ItemCallback areContentsTheSame 不同ID