Заставить ListView / BaseAdapter, чтобы раздувать все необходимые представления в начале в Android - PullRequest
0 голосов
/ 04 августа 2011

У меня довольно дорогой макет, который я надуваю детям в списке.Если в списке отображается 5 детей, время getView() увеличит только 5 (может быть, еще один-два) моих дорогих макетов.А затем использовать его снова.Этот процесс может занять некоторое время, но это нормально. (В то же время я загружаю данные из Интернета, поэтому не разрушаю UX).

Проблема в том, что если я прокручиваю, в началепрокручивая один convertView is null, так что просмотр списка должен быть наполнен еще раз.Это происходит только в первый раз, когда я прокручиваю.Есть ли способ избежать этого?Обратите внимание, что я не изменяю размер ни одного из детей или ListView.Есть ли способ раздувать этот дополнительный вид в начале, чтобы я избежал задержки прокрутки?

ОБНОВЛЕНИЕ Также, чтобы быть конкретным:

Мой список показывает 3 с половиной строки. Значение 4. Адаптер надувает 5. Что адаптер надувает другой?Может быть, есть более элегантное решение для этого

1 Ответ

1 голос
/ 04 августа 2011

Почему бы просто не создать кеш представлений при запуске вашей деятельности или в конструкторе вашего адаптера? getView () может вернуть представления из этого кэша, если таковые имеются, или создать свои собственные, как обычно, если нет доступных кэшированных представлений.

(Я бы не рекомендовал создавать более n + 1 просмотров, где n - это количество просмотров, которое вы ожидаете иметь на экране в любой момент времени. И я настоятельно рекомендую против любых попыток утилизировать старые представления обратно в кеш!)

...