как предотвратить повторную прокрутку в автоматическом режиме при вставке новых предметов? - PullRequest
0 голосов
/ 08 мая 2019

Я использую RecyclerView для просмотра своих данных, но при наличии большого количества элементов RecyclerView автоматически прокручивается вниз, каждый раз, когда вставляется новый элемент.как предотвратить это?

это код вставки:

 @Override
            public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

                getOneMessage(dataSnapshot.getKey(), new OneMessageCallBack() {
                    @Override
                    public void OnCallBack(Object_Message message) {

                        Object_Conversation conversation=new Object_Conversation(dataSnapshot.getKey(),message);

                        mConvers_List.add(conversation);
                        mConvers_Adapter.notifyItemInserted(mConvers_List.size()-1);


                    }
                });

            }

это XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center">


    <android.support.v7.widget.RecyclerView
        android:id="@+id/rv_conversations"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scrollbars="none"
        android:background="@color/white">

    </android.support.v7.widget.RecyclerView>

</LinearLayout>

Ответы [ 3 ]

1 голос
/ 08 мая 2019

Попробуйте использовать

android:descendantFocusability="blocksDescendants"

в обзоре переработчика.Это поможет вам избежать автопрокрутки

0 голосов
/ 08 мая 2019

Я думаю, что для отключения автопрокрутки нужно использовать notifyItemRangeInserted вместо notifyItemInserted. Это не должно заставить вашу RV прокручиваться до дна.

final int positionStart = mConvers_List.size() + 1;
mConvers_List.add(conversation);
notifyItemRangeInserted(positionStart, mConvers_List.size());
0 голосов
/ 08 мая 2019

Вы можете использовать метод scrollToPosition (int position) для прокрутки назад до нулевой позиции.

RecyclerView.scrollToPosition(0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...