Найти в Дзене
Ирина Кострова

Использование convertView

Это может быть плохо для непосредственного пользовательского опыта, если список кажется вялым. Однако более вероятно, что это плохо из-за использования батареи - каждый бит процессора, который используется, съедает батарею. Это усугубляется тем, что сборщику мусора приходится выполнять дополнительную работу, чтобы избавиться от всех этих дополнительных объектов, которые вы создаете. Поэтому чем менее эффективен ваш код, тем быстрее разряжается батарея телефона, и тем менее счастлив будет пользователь. А вам ведь нужны счастливые пользователи, верно?

Добавьте описание
Добавьте описание

Итак, давайте рассмотрим несколько приемов, чтобы сделать ваши фантастические виджеты ListView более эффективными. Метод getView() получает в качестве одного из своих параметров View, названный, по традиции, convertView. Иногда convertView будет иметь значение null. В таких случаях вам придется создать новый ряд View с нуля (например, с помощью инфляции), как мы это делали ранее. Однако если convertView не равно null, то это фактически одно из ранее созданных представлений. Это будет происходить, прежде всего, когда пользователь прокручивает ListView - по мере появления новых строк Android будет пытаться переработать представления строк, которые прокручивались с другого конца списка, чтобы избавить вас от необходимости создавать их заново. Предполагая, что каждый из ваших рядов имеет одинаковую базовую структуру, вы можете использовать функцию findViewById() для получения отдельных виджетов, составляющих ваш ряд, и изменить их содержимое, а затем вернуть convertView из getView() вместо того, чтобы создавать новый ряд. Например, вот реализация getView() из прошлого раза, теперь оптимизированная с помощью convertView