2015-04-04 73 views
2

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

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

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

谢谢。

+1

我不确定我是否正确地提出了问题,但是您正在寻找'notifyItemChanged(int)',它比'notifyDataSetChanged()'更精确? – AndroidEx 2015-04-04 22:10:03

回答

3

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

我认为这是一个更好的方法来异步下载图像,然后缓存它,所以你不必每次回收时都要下载它。有它的库。

当图像加载时,您可能会显示一个ProgressBar或其他信号通知用户的图像正在加载。

+0

我也缓存图像。谢谢。我在加载时将加载图像设置为imageview。 – 2015-04-05 10:22:10

相关问题