|
@@ -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;
|