У меня есть a ListView
с пользовательскими строками. Когда любая из этих строк нажата, данные ListView повторно созданы. Я хотел бы, чтобы список прокрутил назад к вершине, когда это происходит.
Я первоначально пытался использовать setSelection(0)
в каждой строке OnClickListener
для достижения это, но было неудачно (я верю потому что ListView
теряет его положение прокрутки, когда его данные делаются недействительным - таким образом, мой вызов к setSelection отменен. Я все еще не понимаю, как ListView решает, куда прокрутить к после аннулирования, хотя).
Единственное рабочее решение, о котором я знаю, было дано Romain Guy здесь: http://groups.google.com/group/android-developers/browse_thread/thread/127ca57414035301
Это включает (View.post
) луг вызов к _listView.setSelection(0)
. Я нашел, что это работало вполне плохо. Недавно сгенерированный список обнаруживается с его неизменным местоположением прокрутки и существует значительная задержка, прежде чем это прокрутит назад к вершине.
Там какой-либо лучший путь состоит в том, чтобы достигнуть этой функциональности?
Любая справка очень ценилась бы.
Спасибо!
Лично я рекомендую вам найти другой шаблон пользовательского интерфейса. Возможно, пользователи сочтут ваш текущий подход «щелкнуть, и список изменится на месте » интуитивно понятным, но я настроен скептически.
Вы можете попробовать создать подкласс ListView
и переопределить layoutChildren ()
для привязки к суперклассу, а затем вызвать setSelection (0)
в случае, если это необходимо . Если «значительная задержка» связана только с вызовом post ()
, это должно устранить проблему.