Патерн viewholder в реалізації списку listview, програмування під android

Патерн ViewHolder. за деякими даними, дозволяє збільшити продуктивність списку ListView на 15-20%, що є дуже актуальним для великих масивів даних. У цій статті ми розглянемо як раз приклад використання цього патерну.

Патерн viewholder в реалізації списку listview, програмування під android

Суть шаблону ViewHolder - це уникнути постійно сканувати елементів в списку при його заповненні за допомогою методу findViewById (). який споживає якраз чимало системних ресурсів. Для цього створюється спеціальний статичний внутрішній клас ViewHolder. який постійно містить посилання на потрібні елементи. Замість того, щоб постійно «смикати» findViewById (). це можна зробити один раз і зберегти посилання в ViewHolder. Розглянемо простий приклад.

Layout для Активити - res / layout / activity_main.xml

Layout для окремого пункту списку res / layout / list_item.xml

Створимо клас адаптера DataAdapter.java (успадковується від BaseAdapter)

Тут ми бачимо внутрішній клас ViewHolder. в якому будемо зберігати посилання на TextView

Як видно з коду, в методі getView (). ми «переіспользуем» старі View, щоб не створювати нові. Це також благотворно впливає на використання ресурсів пам'яті. Якщо немає старого convertView, то ми створюємо і наповнюємо новий. Посилання на TextView ми зберігаємо в ViewHolder:

Зберігаємо і отримуємо доступ до ViewHolder за допомогою методів setTag () і getTag (). При багаторазових зверненнях, по суті, отримавши одне з посилань, ми відразу СЕТТІ текст:

Читайте також:

  • Патерн viewholder в реалізації списку listview, програмування під android
    SwipeRefreshLayout - приклад використання
  • Патерн viewholder в реалізації списку listview, програмування під android
    Патерн ViewPager - приклад використання
  • Патерн viewholder в реалізації списку listview, програмування під android
    Фільтр пошуку і кастомний адаптер для ListView