From 405925c0ec701eb04bbc00d27f7669b636a9ce2a Mon Sep 17 00:00:00 2001 From: NekoInverter <42698724+NekoInverter@users.noreply.github.com> Date: Sat, 17 Oct 2020 21:39:33 +0800 Subject: [PATCH] Fix add download label crash when there is no label --- .../ehviewer/ui/scene/DownloadsScene.java | 22 +++++++++++-------- .../ehviewer/ui/scene/GalleryListScene.java | 15 +++++++++---- 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.java index 7a1397803..f03a012d8 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.java @@ -1082,9 +1082,16 @@ public class DownloadsScene extends ToolbarScene } break; case R.id.menu_label_remove: - mDownloadManager.deleteLabel(label); - mLabels.remove(position); - notifyDataSetChanged(); + new MaterialAlertDialogBuilder(requireContext()) + .setTitle(getString(R.string.delete_label_title)) + .setMessage(getString(R.string.delete_label_message, label)) + .setPositiveButton(R.string.delete, (dialog, which) -> { + mDownloadManager.deleteLabel(label); + mLabels.remove(position); + notifyDataSetChanged(); + }) + .setNegativeButton(android.R.string.cancel, null) + .show(); break; } return false; @@ -1582,8 +1589,9 @@ public class DownloadsScene extends ToolbarScene mBuilder.setError(null); mDialog.dismiss(); EhApplication.getDownloadManager(context).addLabel(text); - if (mAdapter != null && mLabels != null) { - mAdapter.notifyItemInserted(mLabels.size() - 1); + initLabels(); + if (mLabelAdapter != null && mLabels != null) { + mLabelAdapter.notifyItemInserted(mLabels.size() - 1); } if (mViewTransition != null) { if (mLabels != null && mLabels.size() > 0) { @@ -1593,10 +1601,6 @@ public class DownloadsScene extends ToolbarScene } } } - if (mLabelAdapter != null) { - initLabels(); - mLabelAdapter.notifyDataSetChanged(); - } } } } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java index c38054120..56b1555dc 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java @@ -739,7 +739,7 @@ public final class GalleryListScene extends BaseScene quickSearch.name = text; EhDB.insertQuickSearch(quickSearch); mQuickSearchList.add(quickSearch); - adapter.notifyDataSetChanged(); + adapter.notifyItemInserted(mQuickSearchList.size() - 1); if (0 == mQuickSearchList.size()) { tip.setVisibility(View.VISIBLE); @@ -1547,9 +1547,16 @@ public final class GalleryListScene extends BaseScene @Override public boolean onMenuItemClick(MenuItem item) { if (item.getItemId() == R.id.menu_qs_remove) { - EhDB.deleteQuickSearch(quickSearch); - mQuickSearchList.remove(position); - notifyDataSetChanged(); + new MaterialAlertDialogBuilder(requireContext()) + .setTitle(getString(R.string.delete_quick_search_title)) + .setMessage(getString(R.string.delete_quick_search_message, quickSearch.name)) + .setPositiveButton(R.string.delete, (dialog, which) -> { + EhDB.deleteQuickSearch(quickSearch); + mQuickSearchList.remove(position); + notifyDataSetChanged(); + }) + .setNegativeButton(android.R.string.cancel, null) + .show(); return true; } return false;