Что заставляет ListView сохранять свою позицию прокрутки после изменения ориентации? - PullRequest
4 голосов
/ 07 октября 2011

У меня есть активность, содержащая ListView. Я заполняю представление списка, используя SimpleCursorAdapter. Когда я запускаю приложение, я могу вручную прокрутить вниз в ListView (например, до 10-го элемента). Затем, когда я поворачиваю свой телефон - это разрушает и воссоздает мою активность, и ListView снова создается, как и ожидалось.

Но на моем телефоне после поворота воссозданный Activity показывает, что мой ListView по-прежнему находится на моей позиции прокрутки вручную (в этом примере - 10-я строка). Я почти уверен, что мой код не вызывает ListView.setSelection (int), так что же является причиной такого изменения положения ListView?

Это может показаться довольно удобным, но это не то, что я хочу. Это часть поведения ListViews? Если это так, как можно остановить / переопределить это изменение положения?

Ответы [ 3 ]

4 голосов
/ 07 октября 2011

Чтение вокруг темы еще немного ....

Состояния просмотра сохраняются автоматически (включая мой ListView). Это обрабатывается реализацией по умолчанию onSaveInstanceState () / onRestoreInstanceState (). Используя отладчик, я вижу, что saveInstanceState включает в себя запись из моего ListView - это то, что автоматически перемещает его. Чтобы остановить это в своей деятельности, я могу просто переопределить onSaveInstanceState ().

0 голосов
/ 06 сентября 2015

ListView восстанавливает свое состояние (включая положение прокрутки) после поворота экрана таким же образом и по той же причине, что и, например, EditText, сохраняет введенный текст.Так устроен фреймворк Android.Вы можете остановить это поведение сохранения / восстановления, установив атрибут android:saveEnabled="false" для ListView в файле макета xml.Или вы можете вызвать setSaveEnabled(false) метод для ListView с той же целью.

0 голосов
/ 07 октября 2011

Использовали ли вы ListActivity в качестве базового класса для своей деятельности?Если да, то это скорее всего функция, поскольку она переопределяет onRestoreInstanceState.Я бы попытался унаследовать от простого Activity.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...