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