Comment puis-je faire défiler par programme jusqu'à une position spécifique dans un ListView
?
Par exemple, j'ai un String[] {A,B,C,D....}
et je dois définir l'élément visible le plus visible du ListView
sur l'index 21 de mes String[]
.
Comment puis-je faire défiler par programme jusqu'à une position spécifique dans un ListView
?
Par exemple, j'ai un String[] {A,B,C,D....}
et je dois définir l'élément visible le plus visible du ListView
sur l'index 21 de mes String[]
.
getListView().smoothScrollToPositionFromTop(position,offset,duration);
Paramètres
position -> Position pour faire défiler jusqu'à
offset ---->distance Souhaitée en pixels de la position à partir du haut de la vue lorsque le défilement est fini
durée-> Nombre de millisecondes à utiliser pour les faire défiler
Note: à Partir de l'API 11.
HandlerExploit réponse était ce que je cherchais, mais Ma liste est assez longue et aussi avec alphabet déroulant. Ensuite, j'ai trouvé que la même fonction peut prendre d'autres paramètres en plus :)
Edit:(De l'Afd suggestion)
La position de la sélection en cours:
int h1 = mListView.getHeight();
int h2 = v.getHeight();
mListView.smoothScrollToPositionFromTop(position, h1/2 - h2/2, duration);
J'ai défini OnGroupExpandListener et substitue onGroupExpand () en tant que:
et utilisez la méthode setSelectionFromTop () qui définit l'élément sélectionné et positionne la sélection y pixels à partir du bord supérieur de ListView. (Si vous êtes en mode tactile, l'élément ne sera pas sélectionné mais il sera toujours positionné correctement.) (Documents Android)
yourlist.setOnGroupExpandListener (new ExpandableListView.OnGroupExpandListener()
{
@Override
public void onGroupExpand(int groupPosition) {
expList.setSelectionFromTop(groupPosition, 0);
//your other code
}
});
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.