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/