У меня есть андроид-приложение со списком в активности. Список просмотра имеет, если я так его называю, три состояния данных.
- данные не загружены из inet -> виден только один фиктивный элемент, говорящий о загрузке данных;
- данные загружены и показаны в списке;
- по одному элементу списка щелкают, и теперь отображается дополнительная информация для этого элемента списка (поэтому он увеличивается по высоте).
При каждом изменении состояния (1 -> 2, 2 -> 3) я вызываю notifyDataSetChanged () в этом ListAdapater.
Это приводит к прокрутке списка вниз до последнего элемента. Это уродливо в первом переходе и еще более уродливо во втором, потому что элемент списка, по которому щелкнули, теперь не в фокусе.
Как я вижу, это происходит с google g1 с android 1.6. Htc touch с тем же sdk работает как хотелось бы (попробую разобраться с еще несколькими устройствами).
Чтобы избежать этого, я попытался прочитать getScrollY () и установить это значение обратно. но это возвращает 0. Причину этого возвращаемого значения я уже нашел в stackoverflow в других вопросах.
Кто-нибудь еще видел эту проблему? Почему просмотр списка прокручивается до последнего элемента? Было упомянуто, что listview отслеживает положение прокрутки. но, похоже, что это не так в моем случае.
Или, может быть, я вызываю неправильный метод обновления? Является ли notifyDataSetChanged правильным?