Réglage de la ListView la position de défilement bien dans Android

Je suis conscient de setSelection(), setSelectionFromTop(), et setSelectionAfterHeaderView(), mais aucun d'eux ne semble faire ce que je veux.

Donné un élément dans la liste, je veux faire défiler, de sorte que c'est en vue. Si l'élément est visible au-dessus de la fenêtre de la liste, je veux faire défiler jusqu'à l'élément est le premier élément visible dans la liste; si l'élément est en dessous de la fenêtre visible, je le veux pour défiler vers le haut jusqu'à ce qu'il est le dernier élément visible dans la liste. Si l'élément est déjà visible, je ne veux pas de défilement à se produire.

Comment puis-je aller à ce sujet?

Pourquoi ne pas les méthodes que vous avez mentionné travail? Ce qui se passe quand vous setSelection sur l'élément que vous voulez? (Je suis conscient que c'est une vieille question. Si vous avez résolu ce problème en maintenant, merci de poster votre solution, je vous en serais reconnaissant)
J'ai fait le résoudre, avec une combinaison de setSelection() et setSelectionFromTop(), se soucier de la liste de la hauteur et la hauteur de l'article, et bien sûr la position d'élément dans la liste. C'est un gâchis, j'ai peur, et je ne peux pas partager le code de toute façon - mais c'est résoluble. Peut-être que si j'ai l'occasion je vais écrire une solution générique qui je peux partager, mais ce que j'ai en ce moment, tout n'est pas utile en dehors du contexte, je l'ai dans. Désolé!
Eh bien, je suis heureux il a seulement pris une certaine utilisation de setSelection() à atteindre plutôt que sur une autre fou solution de contournement. Merci pour votre réponse 🙂
Hey Carl, avez-vous fait travailler sur un plus générique solution pour ce problème? Je suis en train de travailler sur un listview et j'ai besoin d'un comportement similaire à l'ensemble de la sélection d'un élément. J'apprécierais si vous pouviez partager plus de connaissances ou de travail que vous avez fait sur cette question. Merci!
J'ai peur de ne pas avoir, @Gix, mais merci pour le rappel. Je devrais le faire; je suis désolé, je n'ai toujours pas reçu.

OriginalL'auteur Carl Manaster | 2010-07-22