ListView и ArrayAdapter | OTUS
⚡ Подписка на курсы OTUS!
Интенсивная прокачка навыков для IT-специалистов!
Подробнее

Курсы

Программирование
Backend-разработчик на PHP
-9%
Алгоритмы и структуры данных
-9%
Team Lead
-6%
Архитектура и шаблоны проектирования Разработчик IoT
-13%
C# Developer. Professional
-9%
HTML/CSS
-11%
C# ASP.NET Core разработчик
-5%
Kotlin Backend Developer
-8%
iOS Developer. Professional
-8%
Symfony Framework C++ Developer. Professional Java Developer. Basic JavaScript Developer. Professional Базы данных Android Developer. Professional Framework Laravel Cloud Solution Architecture Highload Architect Reverse-Engineering. Professional Vue.js разработчик Agile Project Manager Интенсив «Оптимизация в Java» Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Супер-интенсив «СУБД в высоконагруженных системах» Супер-интенсив "Tarantool" PHP Developer. Basic
Инфраструктура
Administrator Linux.Basic
-10%
Мониторинг и логирование: Zabbix, Prometheus, ELK
-10%
Экспресс-курс «CI/CD или Непрерывная поставка с Docker и Kubernetes»
-30%
Administrator Linux. Professional
-6%
Дизайн сетей ЦОД
-13%
Разработчик IoT
-13%
Экспресс-курс по управлению миграциями (DBVC)
-10%
Основы Windows Server MS SQL Server Developer Разработчик программных роботов (RPA) на базе UiPath и PIX Microservice Architecture Reverse-Engineering. Professional Внедрение и работа в DevSecOps Супер-практикум по работе с протоколом BGP Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Экспресс-курс «IaC Ansible» Network engineer. Basic
Корпоративные курсы
Безопасность веб-приложений Пентест. Практика тестирования на проникновение Экспресс-курс «CI/CD или Непрерывная поставка с Docker и Kubernetes»
-30%
IT-Recruiter
-15%
Дизайн сетей ЦОД
-13%
Компьютерное зрение
-13%
Enterprise Architect
-6%
Экосистема Hadoop, Spark, Hive
-8%
Экспресс-курс по управлению миграциями (DBVC)
-10%
Основы Windows Server SRE практики и инструменты Cloud Solution Architecture Разработчик голосовых ассистентов и чат-ботов Agile Project Manager Супер-практикум по работе с протоколом BGP Infrastructure as a code in Ansible Супер-практикум по использованию и настройке GIT Промышленный ML на больших данных Супер-интенсив Azure Системный аналитик. Advanced
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

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 комментариев
Для комментирования необходимо авторизоваться