I want my RecyclerView to scroll to the bottom when a new item is added to the list. Below is my code:
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getActivity()); recyclerView.setLayoutManager(layoutManager); adapter = new RecyclerViewAdapter(data, recyclerView); recyclerView.setAdapter(adapter); And when I click a button which is below the RecyclerView, data is added to the list:
public void addNewCard() { data.add("New"); adapter.notifyItemInserted(data.size() - 1); recyclerView.scrollToPosition(data.size() - 1); } Whenever I add an item, it always gets scrolled up to the topmost position. I tried using smoothScrollToPosition() and tried using scrollToPosition() on LinearLayoutManager too. I even tried using ViewTreeObserver. Tried changing the version of RecyclerView in dependencies too. I searched thoroughly on Stack Overflow and none of the solutions work for me.
Any ideas on what could be the problem? I'm using RecyclerView inside a fragment. Could that be a cause of the problem?
My .xml file for the RecyclerView
<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/scroll_view_recycler" android:layout_width="match_parent" android:layout_height="match_parent"> <RelativeLayout android:id="@+id/rel_layout" android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.RecyclerView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="6dp" /> <Button android:id="@+id/button_add_new_card" style="@style/Widget.AppCompat.Button.Borderless" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/listView" android:layout_marginBottom="16dp" android:layout_marginTop="8dp" android:padding="20dp" android:text="+ Add new Item" /> </RelativeLayout> </android.support.v4.widget.NestedScrollView>