Паттерн ViewHolder

Ваш код может часто вызывать findViewById() во время прокрутки ListView, что может снизить производительность. Даже когда адаптер возвращает раздутое(inflated) представление для повторного использования, вам все равно нужно искать элементы и обновлять их. Способ обойти повторное использование findViewById() — это использовать паттерн ViewHolder.

Кратко его суть заключается в следующем:

  1. Реализуем класс, который в конструкторе принимает нашу View, делает траверс и ищет все её элементы, которые нам потребуются для заполнения данных;
  2. Записываем ссылки на эти элементы в соответствующие поля класса, снабжаем их геттерами, чтобы потом к ним обращаться;
  3. При создании нашей View – создаём наш класс-ViewHolder и записываем ссылку на него в свойстве Tag у нашей View;
  4. Теперь при попытке переиспользовать View нам не нужно делать повторный поиск элементов в лэйауте, достаточно получить ссылку на ViewHolder из свойства Tag и обратиться к соответствующим геттерам холдера;

Опубликовано

в

,

от

Метки: