From 384807e77603a2394c5558453215da89b55ef622 Mon Sep 17 00:00:00 2001 From: Mikhail Mitrofanov Date: Mon, 9 Sep 2024 16:32:26 +0200 Subject: [PATCH] After deleting the last track in a category, the category itself is now deleted The issue was caused by calling RecyclerView.AdapterDataObserver.onChanged() at an unexpected time. I decided not to modify the onChanged() method because it works with a cached version of the native object. To prevent the developer from having to think about when to invalidate the DataSource, I integrated it into the already existing onDelete. This PR is an alternative to: https://github.com/organicmaps/organicmaps/pull/9189. Signed-off-by: Mikhail Mitrofanov --- .../app/organicmaps/bookmarks/BookmarkListAdapter.java | 8 ++++++++ .../organicmaps/bookmarks/data/CategoryDataSource.java | 6 ++++++ .../src/main/java/app/organicmaps/content/DataSource.java | 2 ++ 3 files changed, 16 insertions(+) diff --git a/android/app/src/main/java/app/organicmaps/bookmarks/BookmarkListAdapter.java b/android/app/src/main/java/app/organicmaps/bookmarks/BookmarkListAdapter.java index 7d85f6cf85..2c1ddbcd79 100644 --- a/android/app/src/main/java/app/organicmaps/bookmarks/BookmarkListAdapter.java +++ b/android/app/src/main/java/app/organicmaps/bookmarks/BookmarkListAdapter.java @@ -69,6 +69,11 @@ public class BookmarkListAdapter extends RecyclerView.Adapter= 0) mCategory = categories.get(index); } + + @Override + public void invalidate() + { + onChanged(); + } } diff --git a/android/app/src/main/java/app/organicmaps/content/DataSource.java b/android/app/src/main/java/app/organicmaps/content/DataSource.java index dbeb5a2601..de246bb6b7 100644 --- a/android/app/src/main/java/app/organicmaps/content/DataSource.java +++ b/android/app/src/main/java/app/organicmaps/content/DataSource.java @@ -6,4 +6,6 @@ public interface DataSource { @NonNull D getData(); + + void invalidate(); }