1. Использование списков в Android. Класс адаптера

Рассмотрим, зачем нужны списки в Android и как они используются в различных приложениях

Зачем нужны виджеты списков в Android

Исходя из своего названия, виджеты списков предназначены для вывода различной информации в виде списков различных форм и видов. Причем речь идет не только о банальном вертикальном списке, но и об отображении данных в виде сетки, выпадающего списка, а также различные гибкие сетки.

Виджеты списков, так или иначе, присутствуют практически в каждом мобильном приложении, поэтому архитектура ОС Android позволяет очень гибко настраивать как структуру, так и внешний вид этих элементов, позволяя превратить банальный перечень различных элементов в дизайнерские шедевры.

Еще одной важной особенностью подобных элементов является динамическое изменение содержания и внешнего вида элементов списка. Во время работы программы виджеты могут менять количество элементов в списке, их содержимое, динамические добавлять новые элементы и так далее.

На данный момент базовым классом для создания подобных списков является виджет RecyclerView. Однако, для лучшего понимания как устроены подобные виджеты и как их программировать для своих нужны, мы сначала рассмотрим виджет ListView, после чего перейдем к рассмотрению текущего спискового виджета RecyclerView.

Так как виджеты списков (и не только они) в своей работе используют специальные вспомогательные классы, которые называются адаптерами, сначала рассмотрим понятие адаптера применительно к виджетам списка.

Использование адаптеров в виджетах списка

Для того, чтобы обеспечить гибкость в настройке и в отображении списковых элементов, в Android используется разделение обязанностей между классами. Грубо говоря, класс ListView или RecyclerView отвечает за технические моменты, такие как реализация прокрутки, отрисовка всего списка, получение и потерю фокуса и другие важные, но скрытые от пользователя вещи, тогда как за данные, которые нужно отобразить в списке и за внешний вид одного элемента списка отвечает другой вспомогательный класс.

Таким «вспомогательным» классом для виджетов списка является адаптер (adapter, название перешло от паттерна проектирования «адаптер», подробнее про паттерн – http://myrusakov.ru/php-pattern-adapter.html, http://www.javenue.info/post/63).

Адаптер работает следующим образом: Адаптеру нужны данные и макет пункта списка. Далее, мы передаем адаптер виджету списка. Списковый элемент, при построении списка, запрашивает у адаптера пункты списка, адаптер их создает (используя данные, макет и объект LayoutInflater) и возвращает списку. В итоге, на экран выводится готовый список.

Таким образом, адаптер является своего рода посредником между данными и виджетом списка. Применительно к виджету ListView, адаптер определяет:

  1. какие данные, и в каком виде выводить

  2. как будет выглядеть один элемент списка.

Last updated