ListView и ArrayAdapter | OTUS

ListView и ArrayAdapter

Операционная система Android представляет широкую палитру элементов для работы со списками. Речь идет о таких виджетах, как ListView, GridView, Spinner. Эти элементы — наследники класса android.widget.AdapterView, которые способны выступать в качестве контейнеров для других элементов управления.

adapters-1801-7878f6.png

В процессе работы со списками разработчик имеет дело с 3-мя компонентами: 1) визуальный элемент (виджет), представляющий список на экране и отображающий данные (ListView, GridView); 2) источник данных. Это может быть массив, объект ArrayList, БД и так далее. В источнике данных находятся непосредственно отображаемые данные; 3) адаптер — специальный компонент, связывающий источник данных с виджетом списка.

Самым простым и распространенным элементов списка считают виджет ListView.

Давайте посмотрим на связь ListView с источником данных посредством класса ArrayAdapter — одного из таких адаптеров.

По сути, класс ArrayAdapter — это простейший адаптер, связывающий массив данных с набором компонентов TextView, из которых, например, и может состоять ListView. Таким образом, в нашем случае источник данных — массив объектов. При этом ArrayAdapter вызывает метод toString() у каждого объекта (что необходимо для приведения к строковому виду), а полученную строку устанавливает в TextView.

Вот как может выглядеть разметка приложения на примере:

Screenshot_3-1801-7722e5.png

Здесь тоже определен элемент ListView, который станет осуществлять вывод списка объектов. Давайте перейдем к коду activity и свяжем ListView посредством ArrayAdapter с некоторыми данными:

Screenshot_4-1801-b0ce03.png

Тут мы сначала получаем по id элемент ListView, а потом создаем адаптер для него. Кстати, для создания адаптера использовался конструктор ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, countries).

Что здесь что: • this — это текущий объект activity; • android.R.layout.simple_list_item_1 — это файл разметки списка, причем этот файл фреймворк представляет по умолчанию. Файл располагается в папке Android SDK по пути platforms/[android-номер_версии]/data/res/layout. Если разработчика не будет удовлетворять стандартная разметка списка, можно создать свою, а потом в программном коде поменять идентификатор на id нужной разметки; • countries — массив данных. Совсем необязательно указывать именно массив — это, к примеру, может быть и список ArrayList<T>.

В конце, используя метод setAdapter(), следует установить для ListView адаптер.

Итоговый результат:

arrayadapter1-1801-482e8d.png

По материалам https://metanit.com/java/android/.

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто