Android ListView, прокручивающий к вершине

У меня есть 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). Я нашел, что это работало вполне плохо. Недавно сгенерированный список обнаруживается с его неизменным местоположением прокрутки и существует значительная задержка, прежде чем это прокрутит назад к вершине.

Там какой-либо лучший путь состоит в том, чтобы достигнуть этой функциональности?

Любая справка очень ценилась бы.

Спасибо!

79
задан Carl Manaster 22 July 2010 в 20:20
поделиться

1 ответ

Лично я рекомендую вам найти другой шаблон пользовательского интерфейса. Возможно, пользователи сочтут ваш текущий подход «щелкнуть, и список изменится на месте » интуитивно понятным, но я настроен скептически.

Вы можете попробовать создать подкласс ListView и переопределить layoutChildren () для привязки к суперклассу, а затем вызвать setSelection (0) в случае, если это необходимо . Если «значительная задержка» связана только с вызовом post () , это должно устранить проблему.

4
ответ дан 24 November 2019 в 10:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: