web-dev-qa-db-fra.com

Ajout d'un nouvel élément en haut de RecyclerView

J'ajoute un article à recyclerview position 0 programamticly

public void addQuestion(Question question){
    this.questionList.add(0, question);
    notifyItemInserted(0);
}

Cela fonctionne très bien et les éléments apparaissent dans la liste en haut MAIS l'utilisateur doit faire défiler vers le haut pour voir le nouvel élément.

Y a-t-il une astuce sur la façon dont l'élément apparaît en haut et recyclerview défile automatiquement?

15
Chris Blank

vous pouvez bien utiliser mRecyclerView.smoothScrollToPosition(int position)

Exemple:

public void addQuestion(Question question){
    this.questionList.add(0, question);
    notifyItemInserted(0);
    mRecyclerView.smoothScrollToPosition(0);
}

MISE À JOUR:

si vous voulez rendre le défilement vers un élément vraiment fluide, vous pouvez voir la réponse à cette question

RecyclerView - Comment lisser le défilement vers le haut de l'élément sur une certaine position?

18
Max

Oui, vous pouvez le faire

mRecyclerView.smoothScrollToPosition(0);
3
user5543258

Essaye ça

mRecyclerView.smoothScrollToPosition(0);
3
Akshay Panchal

Si je comprends bien et que votre problème est que vous avez déjà fait défiler vers le haut de la liste, mais lors de l'insertion, vous avez dû faire défiler à nouveau pour voir l'élément, vous pouvez essayer mon approche pour l'éviter.

D'après mon expérience, l'approche avec le défilement après l'insertion fonctionne, mais les animations ne semblent pas naturelles.

Si vous voulez vraiment enregistrer des animations, vous pouvez essayer une approche qui m'a aidé dans mon projet: utiliser un recycleur multi-typé. Affichez l'élément supplémentaire du deuxième type à la position 0 dans votre adaptateur. Cet élément peut être juste une vue avec peu de rembourrage, un en-tête (si vous en avez besoin) ou même une vue vide. Ensuite, notifyItemInsert (1) et vous obtiendrez une animation d'insertion agréable.

REMARQUE: cette approche peut ajouter de la complexité à votre projet et nécessite des connaissances sur la vue du recycleur multi-type.

2
j2esu