Ваш код может часто вызывать findViewById() во время прокрутки ListView, что может снизить производительность. Даже когда адаптер возвращает раздутое(inflated) представление для повторного использования, вам все равно нужно искать элементы и обновлять их. Способ обойти повторное использование findViewById() — это использовать паттерн ViewHolder.
Кратко его суть заключается в следующем:
- Реализуем класс, который в конструкторе принимает нашу View, делает траверс и ищет все её элементы, которые нам потребуются для заполнения данных;
- Записываем ссылки на эти элементы в соответствующие поля класса, снабжаем их геттерами, чтобы потом к ним обращаться;
- При создании нашей View – создаём наш класс-ViewHolder и записываем ссылку на него в свойстве Tag у нашей View;
- Теперь при попытке переиспользовать View нам не нужно делать повторный поиск элементов в лэйауте, достаточно получить ссылку на ViewHolder из свойства Tag и обратиться к соответствующим геттерам холдера;