Как использовать список в Android с помощью RecyclerView?

Если Вы начали изучение программирование под платформу Android, очень скоро от «Hello World!» Вы приступите к созданию более разумных приложений. Почти что в каждом приложении под Android Вы будете встречаться с использованием списков, их реализация не такая уж и тривиальная, как это можно себе представить на первых порах, особенно для новичков! Очень важно сразу разобраться в концепции и набить руку, иначе после придётся часто возвращаться к старым наработкам для выдёргивания кусков рабочего кода.RecyclerView
Я расскажу как реализован список с помощью виджета RecyclerView, любезно предоставленного нам корпорацией Google. Виджет развивается и есть смысл хорошенько познакомится с его реализацией и предоставляемым API. На скришоте пример того, как должен выглядеть в итоге наш список.

Наше приложение будет состоять из фабрики клонов, которая будет генерировать 100 объектов, и одного активити, внутри которого опишем необходимые классы, для работы с RecyclerView.

Также нам будет необходимо создать 2 файла-макета. Один activity_main.xml для RecycleView, в нём будет описан только сам виджет. Второй list_item_person.xml для представления отдельного элемента списка.

activity_main.xml

list_item_person.xml

 

Для начала необходимо выполнить разрешение зависимостей. Нажимаем в AndroidStudio «Ctrl+Alt+Shift+S«, жмём (1) добавить зависимость, набираем recyclerview (2), жмём поиск (3), выбираем нужную версию (4), ок (5).Choose Library Dependency

 

Наш будущий лист необходимо будет чем то заполнить. Я создал «фабрику клонов», которая создаёт 100 объектов с некими данными и с помощью метода getCloneList любезно возвращает лист, полный объектов.

Всё остальное происходит в MainActivity. Для того что бы RecycleView завёлся, необходимо запастись некоторыми классами. Ему необходим адаптер — класс, наследующийся от абстрактного класса RecyclerView.Adapter.

     Этот адаптер выполняет связывание объектов нашей модели (В нашем случае персон-клонов) с представлениями, которые будут отображаться в списке(во вьюхе RecyclerView). Связывает он их не напрямую, а через второй класс. А второй чудо-класс —  это наследник от RecyclerView.ViewHolder, реализующий паттерн холдер. 

По нему параметризуется адаптер, его роль сперва, при первом создании, запомнить все ссылки на виджеты той вьюшки, которую ему передадут в аргументе конструктора, а после, просто, по просьбе адаптера наполнять эти виджеты данными из объекта модели, которого передаёт ему в метод public void bindCrime(Person person) адаптер. Перечитайте ещё разок предыдущее предложение, оно является одним из ключевых в статье. Если плохо понятно, я постараюсь в приведённом ниже коде донести мысль в комментах. С помощью того, что он не ищет каждый раз ссылки на виджеты, а постоянно хранит их на готове, достигается скорость отработки UI RecyclerView.

Вы должны были заметить, что в методе onCreate, как только мы создали виджет RecyclerView, сразу же присваеваем ему другой объект LinearLayouManagerДело в том что виджет RecyclerView очень ленивый и любит всю работу поручать другим. В том числе размещение элементов на экране и прокрутку списка он поручает именно LinearLayouManager‘у. Если не выполнить это присвоение, получим ошибку. Также на плечи бедного LinearLayouManager‘а ложиться работа по дёрганию методов onCreateViewHolder(), onBindViewHolder() и getItemCount() нашего адаптера.

В принципе это всё, что необходимо для понимания как работать со списком. Для более глубокого понимания есть описание API на сайте разработчиков, а также статья на Хабре. Надеюсь что Вы смогли понять как использовать список в приложении на андроид! 

 

 

 


Комментарии:

Как использовать список в Android с помощью RecyclerView?: 4 комментария

  1. Спасибо за урок! Подскажите пожалуйста как теперь сделать избранное для пользователя и возможность добавлять в избранное из этого списка, нажав на сердечко или звездочку…

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *