Задать вопрос

Как отследить готовность ListView в андроиде?

Вроде, простенькая задачка, а правильного ответа найти пока не могу.


Есть ListView с адаптером к базе. В некоторый момент этот адаптер запускает новый запрос и заполняет список элементами. После того, как это сделано, мне нужно перемотать список к заранее известной позиции. Проблема в том, что пока список пустой, перемотка не работает. А никаких событий типа «список заполнен» я не нашел. Пока сделал небольшой хак: перед обновлением адаптера выставляю флаг «нужно перемотать», а в setViewValue проверяю его и если нужно вызываю setSelection, флаг сбрасываю. Вроде, работает, но как-то очень уж неаккуратно выглядит.


Нужна помощь зала: как лучше реализовать это дело?
  • Вопрос задан
  • 2488 просмотров
Подписаться 4 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Android-разработчик
    12 месяцев
    Далее
  • Яндекс Практикум
    Мидл Android‑разработчик
    5 месяцев
    Далее
  • Академия Codeby
    Курс «Анализ защищенности приложений Андроид»
    14 недель
    Далее
Пригласить эксперта
Ответы на вопрос 2
WNeZRoS
@WNeZRoS
У ArrayAdapter есть метод setNotifyOnChange (notifyDataSetChanged), посмотрите его, может поможет.
Ответ написан
Kalobok
@Kalobok Автор вопроса
Да, я про это думал уже. Тут вот какая засада: скорее всего, ListView сам обновляется по этому же событию. И я не уверен, гарантируется ли определенный порядок вызова обработчиков. Боюсь получить трудноуловимые глюки, когда иногда первым срабатывает ListView и все работает, а иногда мой обработчик, а ListView в это время еще не заполнен.

Но попробовать, наверное, стоит.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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