Recyclerview android studio что это

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

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:

3. Создание RecyclerView

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

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

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

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

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

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

  • LinearLayoutManager
  • GridLayoutManager
  • StaggeredGridLayoutManager

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

Читайте также:  Что такое поддержка андроид ios

Шаг 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 , передавая результат конструктору ViewHolde r.

Переопределите 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 .

Источник

Реализация списка с заголовком, футером и пагинацией в Андроид

RecyclerView

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

Читайте также:  Sega emulator android 4pda

Настройка Gradle

Добавьте следующую зависимость в файл build.gradle:

Добавление RecyclerView в XML представление

После того, как проект будет синхронизирован, добавьте компонент RecyclerView в ваш макет:

Привязка XML с классом JAVA

Теперь в методе onCreate вашей активности добавьте следующий код:

Прежде чем идти дальше, давайте подробно рассмотрим приведенный выше код

  • Layout Manager — Простыми словами, Layout Manager помогает нам определить структуру нашего RecyclerView. Есть три встроенных Layout Managers. Помимо этого, мы можем создать собственный пользовательский Layout Manager, чтобы удовлетворить наши требования.

  1. LinearLayoutManager показывает элементы в списке с вертикальной или горизонтальной прокруткой.
  2. GridLayoutManager показывает элементы в сетке.
  3. StaggeredGridLayoutManager показывает элементы в шахматной сетке.

RecyclerView ItemDecoration

ItemDecoration позволяет приложению добавлять специальный полосы и смещения к определенным представлениям элементов из набора данных адаптера. Это может быть полезно для рисования разделителей между элементами, выделениями, границами визуальной группировки и т. д. – developer.android.com

В этом примере мы будем использовать ItemDecoration для добавления отступов к каждому элементу.

В вышеприведенном классе мы устанавливаем отступы к нулевому элементу.

RecyclerView Adapter

Теперь давайте настроим адаптер ReeyclerView с заголовком и футером.

Пагинация

Теперь, когда адаптер готов, давайте посмотрим, как добавить пагинацию в список RecyclerView. Это довольно легко сделать и должно быть добавлено в onCreate после установки Adapter to Recycler-View.

Всякий раз, когда данные изменяются в mList, вызывайте функцию ниже, чтобы обновить адаптер RecyclerView и показать новые данные.

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

Источник

Как работать с RecyclerView?

RecyclerView – это компонент пользовательского интерфейса, который позволяет нам создавать прокручиваемый список. Он был представлен в Android Lollipop, и это своего рода ListView2.

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

  • RecyclerView, который мы должны добавить в layout нашего экрана;
  • layout для каждой строки списка;
  • адаптер, который содержит данные и связывает их со списком.

Как создать RecyclerView?

Прежде чем мы это сделаем, нам нужно добавить зависимость в build.gradle файл.

Не забудьте обновить версию библиотеки до последней. Вы можете проверить её здесь. Теперь мы можем добавить RecyclerView в layout .

Добавление RecyclerView в layout activity_main.xlm:

Создание RecyclerView в Activity :

В созданном экземпляре RecyclerView мы должны установить LayoutManager. Следуя документации:

LayoutManager отвечает за позиционирование view-компонентов в RecyclerView, а также за определение того, когда следует переиспользовать view-компоненты, которые больше не видны пользователю.

Таким образом, это означает, что LayoutManager отображает список в определённой форме. В этом примере мы использовали LinearLayoutManager, который показывает данные в простом списке – вертикальном или горизонтальном (по умолчанию вертикальном). Но это можно очень просто изменить, использовав другой LayoutManager. Например GridLayoutManager, StaggeredGridLayoutManager или WearableLinearLayoutManager.Отлично, теперь мы создадим layout для каждой строки списка.

Читайте также:  Форматировать флешку через android

Как создать layout для строки списка?

Так же как и любой другой layout .

layout строки списка довольно прост – некоторое изображение и текст рядом с ним. Чтобы сделать это, мы использовали LinearLayout с горизонтальной ориентацией. Обратите внимание на предупреждение на LinearLayout. Оно говорит нам о том, что мы должны спроектировать наш layout более эффективным способом.

В этом случае мы могли бы использовать атрибут android:drawableStart в TextView, но тогда изображение должно было бы иметь надлежащий размер. С другой стороны, ImageView дает мне больше возможностей, и я смог легко изменить размер изображения – я хотел сделать это как можно проще.В LinearLayout используется атрибут android:padding . Если вы не знакомы с этим атрибутом, вы можете взглянуть на мою короткую статью об этом.Теперь мы должны создать адаптер.

Как создать адаптер?

Пример адаптера RecyclerView:

Мы должны создать класс, который расширяет RecyclerView.Adapter, который в качестве параметра принимает класс, который расширяет RecyclerView.ViewHolder. Также необходимо переопределить некоторые требуемые методы.Что делают эти методы?

  • getItemCount() возвращает общее количество элементов списка. Значения списка передаются с помощью конструктора.
  • onCreateViewHolder() создает новый объект ViewHolder всякий раз, когда RecyclerView нуждается в этом. Это тот момент, когда создаётся layout строки списка, передается объекту ViewHolder, и каждый дочерний view -компонент может быть найден и сохранен.
  • onBindViewHolder() принимает объект ViewHolder и устанавливает необходимые данные для соответствующей строки во view -компоненте. Весь код выглядит так.

Пример реализации RecyclerView:

Можем запустить проект и увидеть результат.

Почему нам нужен паттерн ViewHolder?

Короче говоря, ViewHolder предотвращает ненужные вызовы findViewById() . Если вы не знакомы с этим шаблоном, я рекомендую вам взглянуть на мой пример реализации списка с помощью ListView. Я считаю, что это лучший способ узнать, для чего необходим этот паттерн и какие потенциальные проблемы он решает. Если layout строки списка не создаётся для каждой строки, тогда сколько раз на самом деле он создаётся? Сколько раз вызываются методы onCreateViewHolder() и onBindViewHolder() ?

Как RecyclerView переиспользует view-компоненты?

Чтобы проверить это, мы поместим несколько логов в наш код.

Хорошо, давайте посмотрим, что происходит.

Как вы видите, вызывается метод onCreateViewHolder() и объекты ViewHolder создаются для нескольких первых view -компонентов, а затем они переиспользуются, и адаптер просто привязывает данные при помощи метода onBindViewHolder() . Благодаря этому список очень эффективен, и пользователь может прокручивать список плавно, потому что наиболее тяжёлые операции (создание и поиск элементов view -компонентов) происходят внутри метода onCreateViewHolder() . Вот и всё!

Источник

Оцените статью