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

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

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