Эх сурвалжийг харах

Fix scrolling issue

Signed-off-by: Mario Danic <mario@lovelyhq.com>
Mario Danic 6 жил өмнө
parent
commit
ae427d0036

+ 12 - 0
app/src/main/java/com/nextcloud/talk/controllers/ConversationsListController.java

@@ -28,6 +28,7 @@ import android.graphics.drawable.BitmapDrawable;
 import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
+import android.os.Parcelable;
 import android.text.InputType;
 import android.text.TextUtils;
 import android.view.*;
@@ -108,6 +109,7 @@ import javax.inject.Inject;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.Objects;
 
 @AutoInjector(NextcloudTalkApplication.class)
 public class ConversationsListController extends BaseController implements SearchView.OnQueryTextListener,
@@ -173,6 +175,8 @@ public class ConversationsListController extends BaseController implements Searc
 
     private Bundle conversationMenuBundle = null;
 
+    private Parcelable recyclerViewState;
+
     public ConversationsListController() {
         super();
         setHasOptionsMenu(true);
@@ -372,6 +376,7 @@ public class ConversationsListController extends BaseController implements Searc
                                         ((CallItem) callItem).getModel().getLastPing()));
                     }
 
+                    recyclerViewState = recyclerView.getLayoutManager().onSaveInstanceState();
                     adapter.updateDataSet(callItems, true);
 
                     if (searchItem != null) {
@@ -446,6 +451,13 @@ public class ConversationsListController extends BaseController implements Searc
 
         fastScroller.addOnScrollStateChangeListener(this);
         adapter.setFastScroller(fastScroller);
+        adapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
+            @Override
+            public void onChanged() {
+                super.onChanged();
+                Objects.requireNonNull(recyclerView.getLayoutManager()).onRestoreInstanceState(recyclerViewState);
+            }
+        });
 
         fastScroller.setBubbleTextCreator(position -> {
             String displayName;