web-dev-qa-db-fra.com

Déplacer le focus de recyclage sur le dernier élément de la liste

J'utilise recyclerview pour afficher des messages dans une fenêtre de discussion. Cependant, lorsqu'un nouveau message est en cours de modification, le focus de la vue du recycleur doit être sur le dernier élément. Je m'attends à ce qu'il y ait un moyen de déplacer le focus d'une vue d'ensemble du recyclage sur le dernier élément au lieu du premier.

19
Divya Vikash

utilisez recyclerView.smoothScrollToPosition(position);

position est votre index du dernier élément inséré. Cela déplacera votre focus RecyclerView sur le dernier élément.

36
Vipul Asri

Utilisez peut ajouter l'une des deux lignes de votre objet LinearLayoutManager pour faire défiler votre vue d'ensemble vers le bas ...

llm.setStackFromEnd(true);

OR

llm.setReverseLayout(true);
10
rd7773

Utilisation

recyclerView.smoothScrollToPosition(position)
adapter.notifyDataSetChanged();

où position est l'indice du dernier élément

recyclerView.getAdapter().getItemCount()-1

utilisez-le pour obtenir le dernier élément.

Cela a fonctionné pour moi.

6
Priyankchoudhary

Assurez-vous que cette position est la position de l'élément que vous souhaitez afficher.

recyclerView.smoothScrollToPosition(position);
1
Rahul Goswami

Vous pouvez utiliser app: stackFromEnd = "true" dans votre code XML de vue recycleur comme:

 <Android.support.v7.widget.RecyclerView
  Android:id="@+id/message_list"
  Android:layout_width="match_parent"
  Android:layout_height="match_parent"
  Android:layout_above="@id/message_input"
  Android:layout_alignParentTop="true"
  app:stackFromEnd="true" />
0
Pardeep Singh

Vous pouvez procéder de deux manières.

1: Lorsque vous créez un LayoutManager pour RecyclerView, définissez le dernier paramètre dans son constructeur comme true.

LinearLayoutManager layoutManager = new LinearLayoutManager(MainActivity.this,LinearLayoutManager.HORIZONTAL,true);

2: dites simplement à RecyclerView de défiler jusqu'à la dernière position.

recyclerView.smoothScrollToPosition(lastPosition);
0
Akshay Chopra