Пример использования SwipeRefreshLayout в Android - javadevblog.com

Пример использования SwipeRefreshLayout в Android

В этом уроке мы рассмотрим компонент SwipeRefreshLayout и реализуем его в простом Android приложении. Изучим преимущества и узнаем где его лучше использовать. 

Компонент SwipeRefreshLayout работатет по принципу «проведите пальцем вниз, чтобы выполнить какую-то функцию (обновить компонент Android или визуально отобразить запрос на сервер). Компонент SwipeRefreshLayout является частью Android Material Design и используется во многих приложениях, например, в Twitter, Gmail, Facebook.

Обзор контейнера SwipeRefreshLayout в Android

Контейнер SwipeRefreshLayout представляет собой ViewGroup, который может работать только с одним дочерним элементом. Этим элементом может быть, например, ScrollView, ListView или RecyclerView. Контейнер SwipeRefreshLayout нужен для того, чтобы пользователи могли обновлять экран вручную. Раньше отдельного компонента, который бы отвечал за это не было, поэтому приходилось создавать свои велосипеды с обнаружением вертикальных свайпов (движение пальца по экрану). Пример этого можно посмотреть при обновлении ленты в приложении Twitter.

Пример использования SwipeRefreshLayout в Android

Первым делом давайте добавим необходимые зависимости в наш проект. Зайдите в файлик build.gradle (Module: app) и добавьте в секции dependencies следующую строку:

Обратите внимание, что у меня установлены buildTools версии 24, поэтому я могу подключать версию 24.0.0 библиотеки RecyclerView. Используйте ту версию библиотеки, которая подходит Вам.

Теперь займемся макетом activity_main.xml, в котором опишем виджет SwipeRefreshLayout из библиотеки v4 и вставим в него единственный дочерний элемент — RecyclerView из библиотеки дизайна:

Также создадим файл компоновки, который отвечает за представление одного элемента в списке RecyclerView. Содержимое файла item_row.xml представлено ниже:

Для обработки данных и передачи их для отрисовки в RecyclerView нам понадобится класс адаптер с реализацией паттерна ViewHolder:

Комментарий к коду. В нашем классе-адаптере четко распределены роли:

В конструкторе передаем контекст и данные для обработки, в методе onCreateViewHolder() происходит создание объекта View из файла компоновки, а в методе onBindViewHolder() по позиции отрисовывается контент. Все это работает с использованием паттерна ViewHolder.

Теперь в классе MainActivity.java мы инициализируем виджеты и для SwipeRefreshLayout переопределяем метод onRefresh интерфейса OnRefreshListener с функцией добавления элемента в список:

Теперь запустим проект на устройстве или эмуляторе и посмотрим что получилось в результате:

swipe_action

Здесь пользователь делает вертикальный свайп вниз (тянет список вниз экрана) и поверх элементов списка появляется круглый виджет со стрелкой — это уже зона ответственности SwipeRefreshLayout.

swipe_three_times

На этой картинке видно, что к начальному списку из 10 элементов добавились 3 сгенерированных элемента. Это значит, что пользователь три раза сделал вертикальный свайп.

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

Рабочий проект со всеми кодами можно скачать здесь.

Следите за обновлениями раздела Разработка под Android и подписывайтесь на новые статьи сайта Javadevblog.com!

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

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