RecyclerView faites défiler jusqu'à la position lorsqu'un nouvel élément est ajouté

Je veux que mon RecyclerView pour faire défiler vers le bas lorsqu'un nouvel élément est ajouté à la liste. Ci-dessous mon code:

RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(layoutManager);

adapter = new RecyclerViewAdapter(data, recyclerView);
recyclerView.setAdapter(adapter);

Et quand je clique sur un bouton qui est au-dessous de la RecyclerView, les données sont ajoutées à la liste:

public void addNewCard() {
    data.add("New");
    adapter.notifyItemInserted(data.size() - 1);
    recyclerView.scrollToPosition(data.size() - 1);
}

Chaque fois que j'ajoute un élément, il est toujours défile jusqu'à la première position. J'ai essayé d'utiliser smoothScrollToPosition() et essayé d'utiliser scrollToPosition() sur LinearLayoutManager trop. J'ai même essayé d'utiliser ViewTreeObserver. Essayé de changer la version de RecyclerView dans les dépendances. J'ai cherché à fond sur Stack Overflow, et aucune des solutions de travail pour moi.

Toutes les idées sur ce que pourrait être le problème? Je suis en utilisant RecyclerView à l'intérieur d'un fragment. Pourrait-ce être une cause du problème?

Mon .fichier xml pour la 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>
Êtes-vous à l'aide de RecyclerView à l'intérieur de ScrollView?
oui, je suis de l'utiliser à l'intérieur d'un RelativeLayout qui est à l'intérieur d'un ScrollView
Ensuite, essayez d'utiliser NestedSrollView au lieu de le ScrollView. Ou utiliser cette méthode pour RecyclerView layoutManager.setStackFromEnd(true);
essayé les deux. Ne fonctionne pas! 🙁
Êtes-vous à l'aide de GridLayoutManager? Dans ce cas, il ne prendra pas en charge setStackFromEnd().

OriginalL'auteur Arshad Yusuf | 2017-11-12