Piasy/BigImageViewer

Wrong image on recyclerview

SmasSive opened this issue ยท 5 comments

Hi!
First of all thanks for this great lib! ๐Ÿ‘

I'm using BIV like a gallery, in a recyclerview with a viewpager behaviour and the viewholder is basically a BigImageView, the question is that when I'm paginating there is a page that shows a previous image while progress is shown and once the right image is ready, it is shown correctly.

What I expect is that while the image is downloading, no previous image is shown but only the progress.

I've tried to do a cancel() in the onViewRecycled method of the adapter but with no success... I've read also that another solution could be to do a setImageDrawable(null) but AFAIK I don't have access to the ImageView right?

What can I do? If you need more info please ask me!
Thanks a lot!!!

I've managed this by doing the following:

  • On onViewRecycled method from adapter I call a holder method named clear()
  • That holder.clear() is a method that gets the SubsamplingScaleImageView and then calls to recycle()

Adapter

  override fun onViewRecycled(holder: GlideGalleryViewHolder) {
    holder.clear()
  }

ViewHolder

  fun clear() {
    itemView.itemImage.ssiv.recycle()
  }

But I don't know if it's a good practice or it's ok. Could you please give me your opinion? Thanks!

Piasy commented

I think that's a good way to solve this problem.

Piasy commented

@SmasSive I think calling ssiv.recycle() at onBindViewHolder is another option.

Did anyone managed to recycle() a ssiv in RecyclerView with ViewPager successfully?

Calling ssiv.recycle() does not work as expected.

I was managed to make it work by hiding a BigImageView in onBindViewHolder and to show it when onMainImageShown callback is triggered.
ssiv.recycle() didn't work for me.