From e3b38e6d384c86cb8807a76c259114c324d470ff Mon Sep 17 00:00:00 2001 From: Clark Date: Tue, 24 Jan 2023 13:44:04 -0500 Subject: [PATCH] Fix some thumbnail images not showing up in MediaGallery. --- .../mediaoverview/MediaGalleryAllAdapter.java | 51 ++++++++++++++++++- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediaoverview/MediaGalleryAllAdapter.java b/app/src/main/java/org/thoughtcrime/securesms/mediaoverview/MediaGalleryAllAdapter.java index e04f12cd7..37a758e4a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediaoverview/MediaGalleryAllAdapter.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mediaoverview/MediaGalleryAllAdapter.java @@ -183,6 +183,14 @@ final class MediaGalleryAllAdapter extends StickyHeaderGridAdapter { } } + @Override + public void onViewAttachedToWindow(@NonNull ViewHolder holder) { + super.onViewAttachedToWindow(holder); + if (holder instanceof SelectableViewHolder) { + ((SelectableViewHolder) holder).onAttached(); + } + } + @Override public int getSectionCount() { return media.getSectionCount(); @@ -264,6 +272,10 @@ final class MediaGalleryAllAdapter extends StickyHeaderGridAdapter { bound = true; } + void rebind() { + bound = true; + } + void unbind() { bound = false; } @@ -297,6 +309,12 @@ final class MediaGalleryAllAdapter extends StickyHeaderGridAdapter { unbind(); } } + + void onAttached() { + if (!bound) { + rebind(); + } + } } private class GalleryViewHolder extends SelectableViewHolder { @@ -307,6 +325,8 @@ final class MediaGalleryAllAdapter extends StickyHeaderGridAdapter { private final ThumbnailView thumbnailView; private final TextView imageFileSize; + private Slide slide; + GalleryViewHolder(@NonNull View itemView) { super(itemView); this.thumbnailView = itemView.findViewById(R.id.image); @@ -316,7 +336,7 @@ final class MediaGalleryAllAdapter extends StickyHeaderGridAdapter { @Override public void bind(@NonNull Context context, @NonNull MediaTable.MediaRecord mediaRecord, @NonNull Slide slide) { super.bind(context, mediaRecord, slide); - + this.slide = slide; if (showFileSizes | detailView) { imageFileSize.setText(Util.getPrettyFileSize(slide.getFileSize())); imageFileSize.setVisibility(View.VISIBLE); @@ -340,6 +360,12 @@ final class MediaGalleryAllAdapter extends StickyHeaderGridAdapter { thumbnailView.setScaleY(scale); } + @Override + void rebind() { + thumbnailView.setImageResource(glideRequests, slide, false, false); + super.rebind(); + } + @Override void unbind() { thumbnailView.clear(glideRequests); @@ -398,6 +424,13 @@ final class MediaGalleryAllAdapter extends StickyHeaderGridAdapter { liveDataPair.observeForever(this); } + @Override + void rebind() { + liveDataPair.observeForever(this); + handler.postDelayed(selectForMarque, 2500); + super.rebind(); + } + @Override void unbind() { liveDataPair.removeObserver(this); @@ -517,6 +550,12 @@ final class MediaGalleryAllAdapter extends StickyHeaderGridAdapter { return context.getString(R.string.ThreadRecord_voice_message); } + @Override + void rebind() { + super.rebind(); + audioItemListener.registerPlaybackStateObserver(audioView.getPlaybackStateObserver()); + } + @Override void unbind() { super.unbind(); @@ -533,6 +572,8 @@ final class MediaGalleryAllAdapter extends StickyHeaderGridAdapter { private final ThumbnailView thumbnailView; + private Slide slide; + GalleryDetailViewHolder(@NonNull View itemView) { super(itemView); this.thumbnailView = itemView.findViewById(R.id.image); @@ -541,7 +582,7 @@ final class MediaGalleryAllAdapter extends StickyHeaderGridAdapter { @Override public void bind(@NonNull Context context, @NonNull MediaTable.MediaRecord mediaRecord, @NonNull Slide slide) { super.bind(context, mediaRecord, slide); - + this.slide = slide; thumbnailView.setImageResource(glideRequests, slide, false, false); thumbnailView.setOnClickListener(view -> itemClickListener.onMediaClicked(mediaRecord)); thumbnailView.setOnLongClickListener(view -> onLongClick()); @@ -554,6 +595,12 @@ final class MediaGalleryAllAdapter extends StickyHeaderGridAdapter { return super.getFileTypeDescription(context, slide); } + @Override + void rebind() { + thumbnailView.setImageResource(glideRequests, slide, false, false); + super.rebind(); + } + @Override void unbind() { thumbnailView.clear(glideRequests);