TL,DR:我如何强制再循环视图再次调用onBindViewHolder方法,至少对于可见项目?
调用notifyDataSetChanged()会使列表滞后几毫秒,有没有更好的方法? 感谢。
我有一个带有ImageView的布局。 当为imageview调用bind时,我向服务器发送请求以获取图像。 加载图像时,我将位图保存在ViewHolder,T变量中。 在bind方法中,我检查variable.getBitmap()是否为null,如果是,我将设置imageview。 现在,如果我滚动列表,图像将被加载,但如果没有,则图像视图仍然是空白的,因为没有再次调用onBindViewHolder。
感谢。
答案 0 :(得分:6)
notifyDataSetChanged()
绝对是正确的方式。也许notifyItemChanged()
更好,因为它只绑定所选项目。如果我的问题是正确的,那么您似乎在主线程上做了一些不应该在那里完成的事情。请记住:永远不要在主线程上执行潜在的冗长操作,但始终使用类似AsyncTask
的内容。
我认为这是一种更好的方法,可以异步下载图像然后对其进行缓存,因此每次View
被回收时都不必下载。有图书馆。
在加载图片时,您可以显示ProgressBar
或其他信号通知用户的内容,即正在加载图片。