Fix scrolling issue

Signed-off-by: Mario Danic <mario@lovelyhq.com>
This commit is contained in:
Mario Danic 2019-06-26 11:32:53 +02:00
parent 01ee58ea70
commit ae427d0036

View File

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