From 65a57f2b9cd43d3681f2029ef0fb23f55b85251e Mon Sep 17 00:00:00 2001 From: codeall9 Date: Sat, 18 May 2024 15:53:26 +0800 Subject: [PATCH] Remember group selection after screen rotate Solution: Restore _groupFilter as _prefGroupFilter in order to reapply correct filter after screen rotate --- .../aegis/ui/views/EntryListView.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryListView.java b/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryListView.java index 3cbc4582..941757a6 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryListView.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryListView.java @@ -59,6 +59,7 @@ import com.google.common.base.Strings; import java.util.Collection; import java.util.Collections; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -169,6 +170,29 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener { _preloadSizeProvider.setView(view); } + @Override + public void onViewStateRestored(@Nullable Bundle savedInstanceState) { + super.onViewStateRestored(savedInstanceState); + if (savedInstanceState == null) { + return; + } + + HashSet filter = (HashSet) savedInstanceState.getSerializable("prefGroupFilter"); + if (filter != null) { + _prefGroupFilter = filter; + } + } + + @Override + public void onSaveInstanceState(@NonNull Bundle outState) { + super.onSaveInstanceState(outState); + // user can apply _groupFilter without saving + // restore _groupFilter as _prefGroupFilter in order to reapply correct filter after screen rotate + if (_groupFilter != null) { + outState.putSerializable("prefGroupFilter", new HashSet<>(_groupFilter)); + } + } + @Override public void onDestroyView() { _refresher.destroy();