Fix some thumbnail images not showing up in MediaGallery.

main
Clark 2023-01-24 13:44:04 -05:00 zatwierdzone przez Greyson Parrelli
rodzic 25aa4f39a3
commit e3b38e6d38
1 zmienionych plików z 49 dodań i 2 usunięć

Wyświetl plik

@ -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 @Override
public int getSectionCount() { public int getSectionCount() {
return media.getSectionCount(); return media.getSectionCount();
@ -264,6 +272,10 @@ final class MediaGalleryAllAdapter extends StickyHeaderGridAdapter {
bound = true; bound = true;
} }
void rebind() {
bound = true;
}
void unbind() { void unbind() {
bound = false; bound = false;
} }
@ -297,6 +309,12 @@ final class MediaGalleryAllAdapter extends StickyHeaderGridAdapter {
unbind(); unbind();
} }
} }
void onAttached() {
if (!bound) {
rebind();
}
}
} }
private class GalleryViewHolder extends SelectableViewHolder { private class GalleryViewHolder extends SelectableViewHolder {
@ -307,6 +325,8 @@ final class MediaGalleryAllAdapter extends StickyHeaderGridAdapter {
private final ThumbnailView thumbnailView; private final ThumbnailView thumbnailView;
private final TextView imageFileSize; private final TextView imageFileSize;
private Slide slide;
GalleryViewHolder(@NonNull View itemView) { GalleryViewHolder(@NonNull View itemView) {
super(itemView); super(itemView);
this.thumbnailView = itemView.findViewById(R.id.image); this.thumbnailView = itemView.findViewById(R.id.image);
@ -316,7 +336,7 @@ final class MediaGalleryAllAdapter extends StickyHeaderGridAdapter {
@Override @Override
public void bind(@NonNull Context context, @NonNull MediaTable.MediaRecord mediaRecord, @NonNull Slide slide) { public void bind(@NonNull Context context, @NonNull MediaTable.MediaRecord mediaRecord, @NonNull Slide slide) {
super.bind(context, mediaRecord, slide); super.bind(context, mediaRecord, slide);
this.slide = slide;
if (showFileSizes | detailView) { if (showFileSizes | detailView) {
imageFileSize.setText(Util.getPrettyFileSize(slide.getFileSize())); imageFileSize.setText(Util.getPrettyFileSize(slide.getFileSize()));
imageFileSize.setVisibility(View.VISIBLE); imageFileSize.setVisibility(View.VISIBLE);
@ -340,6 +360,12 @@ final class MediaGalleryAllAdapter extends StickyHeaderGridAdapter {
thumbnailView.setScaleY(scale); thumbnailView.setScaleY(scale);
} }
@Override
void rebind() {
thumbnailView.setImageResource(glideRequests, slide, false, false);
super.rebind();
}
@Override @Override
void unbind() { void unbind() {
thumbnailView.clear(glideRequests); thumbnailView.clear(glideRequests);
@ -398,6 +424,13 @@ final class MediaGalleryAllAdapter extends StickyHeaderGridAdapter {
liveDataPair.observeForever(this); liveDataPair.observeForever(this);
} }
@Override
void rebind() {
liveDataPair.observeForever(this);
handler.postDelayed(selectForMarque, 2500);
super.rebind();
}
@Override @Override
void unbind() { void unbind() {
liveDataPair.removeObserver(this); liveDataPair.removeObserver(this);
@ -517,6 +550,12 @@ final class MediaGalleryAllAdapter extends StickyHeaderGridAdapter {
return context.getString(R.string.ThreadRecord_voice_message); return context.getString(R.string.ThreadRecord_voice_message);
} }
@Override
void rebind() {
super.rebind();
audioItemListener.registerPlaybackStateObserver(audioView.getPlaybackStateObserver());
}
@Override @Override
void unbind() { void unbind() {
super.unbind(); super.unbind();
@ -533,6 +572,8 @@ final class MediaGalleryAllAdapter extends StickyHeaderGridAdapter {
private final ThumbnailView thumbnailView; private final ThumbnailView thumbnailView;
private Slide slide;
GalleryDetailViewHolder(@NonNull View itemView) { GalleryDetailViewHolder(@NonNull View itemView) {
super(itemView); super(itemView);
this.thumbnailView = itemView.findViewById(R.id.image); this.thumbnailView = itemView.findViewById(R.id.image);
@ -541,7 +582,7 @@ final class MediaGalleryAllAdapter extends StickyHeaderGridAdapter {
@Override @Override
public void bind(@NonNull Context context, @NonNull MediaTable.MediaRecord mediaRecord, @NonNull Slide slide) { public void bind(@NonNull Context context, @NonNull MediaTable.MediaRecord mediaRecord, @NonNull Slide slide) {
super.bind(context, mediaRecord, slide); super.bind(context, mediaRecord, slide);
this.slide = slide;
thumbnailView.setImageResource(glideRequests, slide, false, false); thumbnailView.setImageResource(glideRequests, slide, false, false);
thumbnailView.setOnClickListener(view -> itemClickListener.onMediaClicked(mediaRecord)); thumbnailView.setOnClickListener(view -> itemClickListener.onMediaClicked(mediaRecord));
thumbnailView.setOnLongClickListener(view -> onLongClick()); thumbnailView.setOnLongClickListener(view -> onLongClick());
@ -554,6 +595,12 @@ final class MediaGalleryAllAdapter extends StickyHeaderGridAdapter {
return super.getFileTypeDescription(context, slide); return super.getFileTypeDescription(context, slide);
} }
@Override
void rebind() {
thumbnailView.setImageResource(glideRequests, slide, false, false);
super.rebind();
}
@Override @Override
void unbind() { void unbind() {
thumbnailView.clear(glideRequests); thumbnailView.clear(glideRequests);