android - Glide recyclerview 加载重复图像
问题描述
我有一个recyclerview
. diffutil
我已经使用Glide
在ImageViews
.
在onBindViewHolder
我调用我的函数时,它被称为loadImage(holder.view,item)
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val item = getItem(position)
onLoadImage(holder.view, item)
}
在我的 loadImage 中,我将图像加载到视图中。
private fun loadImage(view: View, item: MyItemModel) {
Timber.i("load item's image id: ${item.id} image is: ${item.image}")
Glide.with(context)
.asDrawable()
.load(item.image)
.into(view.main_image)
}
它工作得很好,但是当它第一次加载图像时,我在列表中滑动,图像显示如下:
所以图像是重复的,但最后两个图像是不同的。仅当我在加载时快速滑动时才会发生这种情况。日志:
I/MyListAdapter: load image into : 6 image is: [B@25d0674
I/MyListAdapter: load image into : 7 image is: [B@e64ced4
I/MyListAdapter: load image into : 8 image is: [B@b384734
这是自定义视图。上下文就是视图的上下文。
所以图像是不同的。问题是什么?
有什么建议吗?
解决方案
loadImage
在您的方法中加载新图像之前尝试清除图像:
view.main_image.setImageBitmap(null)
Glide.with(...)
推荐阅读
- javascript - .hover 的替代方案,可在移动设备上启用更好的功能
- java - 如果 DatePickerDialog 被取消,如何禁用 TimePickerDialog?
- python - 将对象作为 *args 元组传递会导致该类的所有实例都被传递
- javascript - 如何使网格环绕其内容?
- node.js - 如何在 Pug 中使用 document.addEventListener?
- mysql - 如何在同一张表中显示总订单金额和每个订单金额?
- javascript - 如何将页脚 ID 偏移到固定位置底部
- pandas - Pandas 数据帧执行速度问题
- verilog - Verilog模拟数字时钟无法获得输出
- java - 通过数据库查询用户名以确保当用户想要更改其现有用户名时不存在相同的用户名