插入新项目时如何防止recyclerview自动滚动到底部?

时间:2019-05-08 12:34:23

标签: android android-recyclerview

我正在使用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 个答案:

答案 0 :(得分:1)

尝试使用

android:descendantFocusability="blocksDescendants"

在recyclerview中。这将帮助您避免自动滚动

答案 1 :(得分:0)

我认为,要禁用自动滚动,您需要使用notifyItemRangeInserted而不是notifyItemInserted。这不应使您的RV滚动到底部。

final int positionStart = mConvers_List.size() + 1;
mConvers_List.add(conversation);
notifyItemRangeInserted(positionStart, mConvers_List.size());

答案 2 :(得分:-1)

您可以使用scrollToPosition(int position)方法滚动回零位置。

RecyclerView.scrollToPosition(0)