From db1f494d5b4f82bed9cd5208d57cb77d21625b0b Mon Sep 17 00:00:00 2001 From: M66B Date: Tue, 1 Jun 2021 08:47:50 +0200 Subject: [PATCH] Prevent scrolling on moving items --- .../eu/faircode/email/AdapterMessage.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index b0f085b2e9..1a64790a13 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -51,6 +51,7 @@ import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.os.LocaleList; +import android.os.Parcelable; import android.provider.CalendarContract; import android.provider.ContactsContract; import android.provider.Settings; @@ -283,6 +284,9 @@ public class AdapterMessage extends RecyclerView.Adapter positionKey = new HashMap<>(); private SelectionTracker selectionTracker = null; + private RecyclerView rv = null; + private Parcelable savedState = null; + enum ViewType {UNIFIED, FOLDER, THREAD, SEARCH} private NumberFormat NF = NumberFormat.getNumberInstance(); @@ -5946,6 +5950,11 @@ public class AdapterMessage extends RecyclerView.Adapter() { @Override public void onCurrentListChanged(@Nullable PagedList previousList, @Nullable PagedList currentList) { + // https://issuetracker.google.com/issues/70149059 + if (rv != null && savedState != null) + rv.getLayoutManager().onRestoreInstanceState(savedState); + savedState = null; + if (gotoTop && previousList != null) { if (ascending) { if (currentList != null && currentList.size() > 0) { @@ -6069,6 +6078,9 @@ public class AdapterMessage extends RecyclerView.Adapter selectionTracker) { this.selectionTracker = selectionTracker; }