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 le plus visible du ListView
sur l'index 21 de mon String[]
.
android
android-listview
Maxime
la source
la source
Réponses:
Pour un défilement direct:
Pour un défilement fluide:
la source
smoothScrollToPosition
ne fonctionne pas, une suggestion?listView.post(() -> listView.smoothScrollToPosition());
Pour un SmoothScroll avec durée de défilement:
getListView().smoothScrollToPositionFromTop(position,offset,duration);
Remarque: à partir de l'API 11.
La réponse de HandlerExploit était ce que je cherchais, mais ma liste est assez longue et aussi avec un défilement alphabétique. Ensuite, j'ai trouvé que la même fonction peut également prendre d'autres paramètres :)
Edit: (De la suggestion de l'AFD)
Pour positionner la sélection actuelle:
la source
Mettez votre code dans le gestionnaire comme suit,
puis appelez cette méthode comme,
À VOTRE SANTÉ!!!
la source
J'ai défini OnGroupExpandListener et remplacer onGroupExpand () comme:
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. (S'il est en mode tactile, l'élément ne sera pas sélectionné mais il sera toujours positionné de manière appropriée.) (Android Docs)
la source
Le
Listview
défilement sera positionné en haut par défaut, mais vous voulez faire défiler s'il n'est pas visible, utilisez ceci:la source
Si quelqu'un recherche une fonctionnalité similaire comme l'application Gmail,
Le défilement Listview sera positionné en haut par défaut. Merci pour l'indice. amalBit. Il suffit de le soustraire. C'est tout.
la source
Si quelqu'un est intéressé par la gestion de la liste, affichez une ligne vers le haut / bas à l'aide du bouton puis.
la source
Si vous souhaitez accéder directement à la position souhaitée dans une liste, utilisez simplement
listView.setSelection (position int);
et si vous souhaitez passer en douceur à la position souhaitée dans listView, utilisez simplement
listView.smoothScrollToPosition (position int);
la source
C'est ce qui a fonctionné pour moi. Combinaison de réponses par amalBit et Melbourne Lopes
puis appelez cette méthode comme:
la source
sa sélection facile list-view.set (vous pos); ou vous pouvez enregistrer votre position avec sharedprefrenceand lorsque vous démarrez l'activité, il obtient les préférences et définit la suppression de cet int
la source
-Si vous voulez juste que la liste défile vers le haut \ dawn jusqu'à une position spécifique:
-si vous souhaitez obtenir la position d'un élément spécifique dans myListView:
-aussi cela
myListView.getVerticalScrollbarPosition(i);
peut vous aider.Bonne chance :)
la source
Vous avez besoin de deux choses pour définir précisément la position de défilement d'une listView:
Pour obtenir la position actuelle du défilement de la liste:
Pour définir la position de défilement de listView:
la source
J'ai trouvé cette solution pour permettre le défilement de haut en bas à l'aide de deux boutons différents.
Comme suggéré par @Nepster, j'implémente le défilement par programme en utilisant getFirstVisiblePosition () et getLastVisiblePosition () pour obtenir la position actuelle.
la source