Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android Lollipop
Code

Начало работы с RecyclerView и CardView на Android

by
Difficulty:IntermediateLength:LongLanguages:

Russian (Pусский) translation by Yuri Yuriev (you can also view the original English article)

Если вам интересно создание приложения для Android, использующего списки для отображения данных, Android Lollipop предлагает два новых виджета, чтобы сделать вашу жизнь проще, RecyclerView и CardView. Эти виджеты приведут внешний вид вашего приложения в соответствие с рекомендациями, указанными в спецификации дизайна Google.

Предварительные требования

Для продолжения используйте последнюю версию Android Studio. Можете взять на Android Developer website.

1. Поддержка старых версий

На момент написания статьи менее 2% Android-устройств работали на Android Lollipop. Однако, благодаря v7 Support Library, вы можете использовать виджеты RecyclerView и CardView на устройствах более ранних версий Android, добавив следующие строки раздела dependencies в файле build.grade вашего проекта:

2. Создание CardView

CardView это ViewGroup. Как любую ViewGroup, её можно добавить вActivity или Fragment через файл XML.

Чтобы создать пустой CardView, вам необходимо добавить следующий код в макет XML:

Для более реалистичного примера давайте создадим LinearLayout и поместим в него CardView. CardView может представлять, например, человека и содержать следующее:

  • TextView с именем человека
  • TextView с возрастом человека
  • ImageView с его фотографией

Так будет выглядеть XML:

Если этот XML будет макетом Activity и в полях TextView и ImageView  значимые показатели, так он будет отображаться на устройстве Android:

A Stand-alone Card

3. Создание RecyclerView

Шаг 1. Его определение в макете

С экземпляром RecyclerView немного сложнее. Однако определить его в макете XML достаточно просто. Вы можете определить его в макете следующим образом:

Чтобы получить к нему доступ в Activity, возьмите следующий фрагмент:

Если вы уверены, что размер RecyclerView не изменится, можете добавить следующее для повышения производительности:

Шаг 2. Использование LayoutManager

В отличие от ListView,  RecyclerView требуется LayoutManager для управления позициями пунктов. Можете определить свой LayoutManager путём расширения RecyclerView.LayoutManager класса. Хотя, можете использовать один из предопределённых подклассов LayoutManager:

  • LinearLayoutManager
  • GridLayoutManager
  • StaggeredGridLayoutManager

В этом уроке я пользуюсь LinearLayoutManager. LayoutManager подкласс, по умолчанию, сделает ваш RecyclerView похожим на ListView.

Шаг 3. Определение данных

Подобно ListView, RecyclerView нужен адаптер для доступа к своим данным. Но прежде, чем мы создадим адаптер, давайте создадим данные, с которыми будем работать. Создайте простой класс для представления лица, а затем напишите метод инициализации объектов List of Person:

Шаг 4. Создание адаптера

Создавая адаптер для RecyclerView , надо расширить RecyclerView.Adapter. Адаптер следует модели view holder , что означает определение пользовательского класса для расширения RecyclerView.ViewHolder. Эта модель минимизирует количество вызовов метода findViewById .

Ранее в этом уроке мы уже определили XML для CardView, который представляет человека. Будем использовать этот макет повторно. Внутри конструктора нашего ViewHolder инициализируйте представления, относящиеся к элементам нашего RecyclerView.

Затем добавьте конструктор в пользовательский адаптер, чтобы он имел доступ к данным, отображаемым RecyclerView. Поскольку наши данные представлены в виде объектов List of Person, используйте следующий код:

RecyclerView.Adapter имеет три абстрактных метода, которые мы должны переопределить. Начнём с метода getItemCount . Это вернёт количество элементов, присутствующих в данных. Поскольку наши данные в  List, назначаем метод size на объект List :

Затем переопределите метод onCreateViewHolder. Как следует из названия, этот метод вызывается для инициализации пользовательского ViewHolder . Мы указываем макет, который должен использовать каждый элемент RecyclerView. Это выполняется путем раздувания компоновки с помощью LayoutInflater, передавая результат конструктору ViewHolder.

Переопределите onBindViewHolder, чтобы указать содержимое каждого элемента RecyclerView. Этот метод похож на метод getView адаптера ListView'. В нашем примере, здесь вы должны установить значения имени, возраста и фотографии в CardView.

Наконец, переопределим onAttachedToRecyclerView метод. Сейчас мы можем использовать реализацию этого метода в суперклассе, как показано ниже.

Шаг 5. Использование адаптера

Теперь, когда адаптер готов, добавьте следующий код в   Activity, чтобы инициализировать и использовать адаптер, вызывая конструктор адаптера и метод setAdapter в RecyclerView:

Шаг 6. Сборка и запуск

При запуске примера RecyclerView на устройстве Android вы увидите нечто похожее.

Заключение

Из урока вы узнали, как использовать виджеты CardView и RecyclerView, которые были представлены в Android Lollipop. Вы увидели примеры того, как ими пользоваться в приложениях Material Design. Несмотря на то, что RecyclerView может делать почти всё, что может ListView, для небольших наборов данных ListView по-прежнему предпочтительнее, так как требует меньше строк кода.

Для получения дополнительной информации о классах CardView и RecyclerView обратитесь к Android Developers Reference .


Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.