我有一个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
这是一个自定义视图。上下文就是视图的上下文。
因此图像不同。 问题是什么?
有什么建议吗?
答案 0 :(得分:1)
我知道它来晚了,但希望它能对某人有所帮助。覆盖适配器中的这两种方法。
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getItemViewType(int position) {
return position;
}
答案 1 :(得分:0)
尝试清除图像,然后再以loadImage
方法加载新图像:
view.main_image.setImageBitmap(null)
Glide.with(...)