diff options
author | Stefan Niedermann <info@niedermann.it> | 2020-11-07 18:16:37 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2020-11-07 18:16:37 +0300 |
commit | f36c1af2313e2ecee8264764e4d919f2e5179f17 (patch) | |
tree | bfcc1054762f7ba79863b5ff46eacee79a0778e3 /app/src/main/java | |
parent | 60a8a757affd8b7918dc3da11ee7c41725f345e8 (diff) |
Make gallery tab more robust
Signed-off-by: Stefan Niedermann <info@niedermann.it>
Diffstat (limited to 'app/src/main/java')
6 files changed, 14 insertions, 9 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/AbstractCursorPickerAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/AbstractCursorPickerAdapter.java index 743e3382e..79da82338 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/AbstractCursorPickerAdapter.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/AbstractCursorPickerAdapter.java @@ -62,8 +62,8 @@ public abstract class AbstractCursorPickerAdapter<T extends RecyclerView.ViewHol this.cursor = cursor; this.cursor.moveToFirst(); this.columnIndex = this.cursor.getColumnIndex(idColumn); - this.count = cursor.getCount(); - this.columnIndexType = (this.count > 0) ? this.cursor.getType(columnIndex) : FIELD_TYPE_NULL; + this.count = cursor.getCount() + 1; + this.columnIndexType = (this.count > 1) ? this.cursor.getType(columnIndex) : FIELD_TYPE_NULL; setHasStableIds(true); } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/AbstractPickerAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/AbstractPickerAdapter.java index a17794841..901d204cd 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/AbstractPickerAdapter.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/AbstractPickerAdapter.java @@ -4,14 +4,19 @@ import androidx.recyclerview.widget.RecyclerView; public abstract class AbstractPickerAdapter<T extends RecyclerView.ViewHolder> extends RecyclerView.Adapter<T> { + protected static final int VIEW_TYPE_NONE = -1; protected static final int VIEW_TYPE_ITEM = 0; protected static final int VIEW_TYPE_ITEM_NATIVE = 1; @Override public int getItemViewType(int position) { - return position == 0 - ? VIEW_TYPE_ITEM_NATIVE - : VIEW_TYPE_ITEM; + if (position > 0) { + return VIEW_TYPE_ITEM; + } else if (position == 0) { + return VIEW_TYPE_ITEM_NATIVE; + } else { + return VIEW_TYPE_NONE; + } } /** diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactAdapter.java index e334cc492..8ff11546c 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactAdapter.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/ContactAdapter.java @@ -44,7 +44,7 @@ public class ContactAdapter extends AbstractCursorPickerAdapter<RecyclerView.Vie super(context, onSelect, onSelectPicker, CONTENT_URI, _ID, new String[]{_ID, LOOKUP_KEY, DISPLAY_NAME}, SORT_KEY_PRIMARY); lookupKeyColumnIndex = cursor.getColumnIndex(LOOKUP_KEY); displayNameColumnIndex = cursor.getColumnIndex(DISPLAY_NAME); - notifyItemRangeInserted(0, getItemCount()); + notifyItemRangeInserted(0, getItemCount() + 1); } @NonNull diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/FileAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/FileAdapter.java index 46633df6c..aa96a0e69 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/FileAdapter.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/FileAdapter.java @@ -44,7 +44,7 @@ public class FileAdapter extends AbstractCursorPickerAdapter<RecyclerView.ViewHo sizeColumnIndex = cursor.getColumnIndex(SIZE); modifiedColumnIndex = cursor.getColumnIndex(DATE_MODIFIED); mimeTypeColumnIndex = cursor.getColumnIndex(MIME_TYPE); - notifyItemRangeInserted(0, getItemCount()); + notifyItemRangeInserted(0, getItemCount() + 1); } @NonNull diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/GalleryAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/GalleryAdapter.java index 7f5c254c3..1b4375ae8 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/GalleryAdapter.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/GalleryAdapter.java @@ -43,7 +43,7 @@ public class GalleryAdapter extends AbstractCursorPickerAdapter<RecyclerView.Vie public GalleryAdapter(@NonNull Context context, @NonNull BiConsumer<Uri, Pair<String, RequestBuilder<?>>> onSelect, @NonNull Runnable openNativePicker, @NonNull LifecycleOwner lifecycleOwner) { super(context, onSelect, openNativePicker, EXTERNAL_CONTENT_URI, _ID, sortOrder + " DESC"); this.lifecycleOwner = lifecycleOwner; - notifyItemRangeInserted(0, getItemCount()); + notifyItemRangeInserted(0, getItemCount() + 1); } @NonNull diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/GalleryPhotoPreviewItemViewHolder.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/GalleryPhotoPreviewItemViewHolder.java index 1d665b76c..00a833e57 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/GalleryPhotoPreviewItemViewHolder.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/attachments/picker/GalleryPhotoPreviewItemViewHolder.java @@ -36,7 +36,7 @@ public class GalleryPhotoPreviewItemViewHolder extends RecyclerView.ViewHolder { Preview previewUseCase = new Preview.Builder().build(); previewUseCase.setSurfaceProvider(binding.preview.getSurfaceProvider()); cameraProvider.bindToLifecycle(lifecycleOwner, DEFAULT_BACK_CAMERA, previewUseCase); - } catch (ExecutionException | InterruptedException e) { + } catch (ExecutionException | InterruptedException | IllegalArgumentException e) { DeckLog.logError(e); } }, ContextCompat.getMainExecutor(itemView.getContext())); |