From cd3174a64328d8a67c516bb31441098c765cd358 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Wed, 1 May 2019 11:58:45 -0300 Subject: [PATCH] [android] Fix view recycling issue of image previews --- .../android/view/ImagePreviewViewHolder.java | 55 +++++++++++-------- 1 file changed, 31 insertions(+), 24 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/view/ImagePreviewViewHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/view/ImagePreviewViewHolder.java index 4fefb2ae5..856eb30bb 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/view/ImagePreviewViewHolder.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/view/ImagePreviewViewHolder.java @@ -18,6 +18,7 @@ import org.briarproject.briar.R; import org.briarproject.briar.android.conversation.glide.GlideApp; import static android.view.View.INVISIBLE; +import static android.view.View.VISIBLE; import static com.bumptech.glide.load.engine.DiskCacheStrategy.NONE; import static com.bumptech.glide.load.resource.bitmap.DownsampleStrategy.FIT_CENTER; import static com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions.withCrossFade; @@ -38,31 +39,37 @@ class ImagePreviewViewHolder extends ViewHolder { } void bind(ImagePreviewItem item) { - if (item.getItem() == null) return; // shows progress bar - GlideApp.with(imageView) - .load(item.getItem()) - .diskCacheStrategy(NONE) - .error(ERROR_RES) - .downsample(FIT_CENTER) - .transition(withCrossFade()) - .addListener(new RequestListener() { - @Override - public boolean onLoadFailed(@Nullable GlideException e, - Object model, Target target, - boolean isFirstResource) { - progressBar.setVisibility(INVISIBLE); - return false; - } + if (item.getItem() == null) { + progressBar.setVisibility(VISIBLE); + GlideApp.with(imageView) + .clear(imageView); + } else { + GlideApp.with(imageView) + .load(item.getItem()) + .diskCacheStrategy(NONE) + .error(ERROR_RES) + .downsample(FIT_CENTER) + .transition(withCrossFade()) + .addListener(new RequestListener() { + @Override + public boolean onLoadFailed(@Nullable GlideException e, + Object model, Target target, + boolean isFirstResource) { + progressBar.setVisibility(INVISIBLE); + return false; + } - @Override - public boolean onResourceReady(Drawable resource, - Object model, Target target, - DataSource dataSource, boolean isFirstResource) { - progressBar.setVisibility(INVISIBLE); - return false; - } - }) - .into(imageView); + @Override + public boolean onResourceReady(Drawable resource, + Object model, Target target, + DataSource dataSource, + boolean isFirstResource) { + progressBar.setVisibility(INVISIBLE); + return false; + } + }) + .into(imageView); + } } } -- GitLab