代码之家  ›  专栏  ›  技术社区  ›  vihkat

滑动回收查看加载重复图像

  •  0
  • vihkat  · 技术社区  · 7 年前

    我有一个 recyclerview 具有 diffutil . 我已经在用了 Glide ImageViews .

    onBindViewHolder 我把我的函数叫做 loadImage(holder.view,item)

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        val item = getItem(position)
    
        onLoadImage(holder.view, item)
    }
    

     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)
        }
    

    它工作得很好,但当它第一次加载图像时,我在列表中滑动,图像显示如下:

    enter image description here

    所以图像是复制的,但是最后两个图像是不同的。只有当它加载的时候我刷得快才会发生。

    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
    

    这是一个自定义视图。上下文就是视图的上下文。

    所以图像是不同的。

    有什么建议吗?

    2 回复  |  直到 7 年前
        1
  •  2
  •   DAA    7 年前

    尝试在您的中加载新图像之前清除图像 loadImage 方法:

    view.main_image.setImageBitmap(null)
    Glide.with(...)
    
        2
  •  1
  •   Peter Haddad    7 年前

    我知道很晚了,但希望它能帮助别人。在适配器中重写这两个方法。

      @Override
    public long getItemId(int position) {
      return position;
    }
    
      @Override
    public int getItemViewType(int position) {
     return position;
    }