RecyclerView - 再次绑定视图持有者

时间:2015-04-04 21:50:09

标签: android android-recyclerview

TL,DR:我如何强制再循环视图再次调用onBindViewHolder方法,至少对于可见项目?

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

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

感谢。

1 个答案:

答案 0 :(得分:6)

notifyDataSetChanged()绝对是正确的方式。也许notifyItemChanged()更好,因为它只绑定所选项目。如果我的问题是正确的,那么您似乎在主线程上做了一些不应该在那里完成的事情。请记住:永远不要在主线程上执行潜在的冗长操作,但始终使用类似AsyncTask的内容。

我认为这是一种更好的方法,可以异步下载图像然后对其进行缓存,因此每次View被回收时都不必下载。有图书馆。

在加载图片时,您可以显示ProgressBar或其他信号通知用户的内容,即正在加载图片。