Дополнительно
Простой пример сетки для Android с использованием RecyclerView с GridLayoutManager (как в старом GridView)
Я знаю, что RecyclerView
заменил функциональность старых ListView
и GridView
. Я ищу очень простой пример, показывающий минимальную настройку сетки с использованием RecyclerView
. Мне не нужны длинные объяснения в стиле учебника, просто минимальный пример. Я представляю, что простейшая сетка, имитирующая старый GridView, будет состоять из следующих функций:
- несколько ячеек в строке
- одно представление в каждой ячейке
- реагирует на события щелчка
181
3
Короткий ответ
Для тех, кто уже знаком с настройкой
RecyclerView
для создания списка, хорошей новостью является то, что создание сетки в значительной степени аналогично. Вы просто используетеGridLayoutManager
вместоLinearLayoutManager
при настройкеRecyclerView
.Если вам нужна более подробная помощь, посмотрите следующий пример.
Полный пример
Ниже приведен минимальный пример, который будет выглядеть так, как показано на рисунке ниже.
Начните с пустой активности. Вы выполните следующие задания, чтобы добавить сетку
RecyclerView
. Все, что вам нужно сделать, это скопировать и вставить код в каждом разделе. Позже вы сможете изменить его в соответствии с вашими потребностями.Обновление зависимостей Gradle
Убедитесь, что следующие зависимости находятся в файле
gradle.build
вашего приложения:Вы можете обновить номера версий до самой актуальной.
Создать макет деятельности
Добавьте
RecyclerView
в ваш xml-макет.activity_main.xml
Создайте макет ячеек сетки
Каждая ячейка в нашей сетке
RecyclerView
будет иметь только одинTextView
. Создайте новый файл ресурсов макета.recyclerview_item.xml.
Создайте адаптер
Для
RecyclerView
необходим адаптер, чтобы заполнить представления в каждой ячейке вашими данными. Создайте новый java-файл.MyRecyclerViewAdapter.java.
Примечания
GridView
и является распространенной необходимостью. Вы можете удалить этот код, если он вам не нужен.Инициализация RecyclerView в Activity
Добавьте следующий код в вашу основную активность.
MainActivity.java
Примечания
ItemClickListener
, который мы определили в нашем адаптере. Это позволяет нам обрабатывать события нажатия на ячейку вonItemClick
.Закончено
Вот и все. Теперь вы можете запустить свой проект и получить что-то похожее на изображение вверху.
Продолжаем
Скругленные углы
Автоматическая подгонка столбцов
Дальнейшее исследование
Хотя мне нравится и я ценю ответ [Suragch'1], я хотел бы оставить заметку, потому что я обнаружил, что кодирование Adapter (
MyRecyclerViewAdapter
) для определения и раскрытия метода слушателяonItemClick
не является лучшим способом сделать это, из-за неправильного использования инкапсуляции класса. Поэтому я предлагаю позволить Adapter обрабатывать исключительно операции прослушивания (это его цель!) и отделить их от Activity, которая использует Adapter (MainActivity
). Вот как я бы задал класс Адаптера:MyRecyclerViewAdapter.java.
Обратите внимание на метод
onItemClick
, который теперь определен вMyRecyclerViewAdapter
- это то место, где вы захотите закодировать свои задачи для полученного события/действия.Осталось сделать лишь небольшое изменение, чтобы завершить это преобразование: Activity больше не нужно реализовывать
MyRecyclerViewAdapter.ItemClickListener
, потому что теперь это полностью делает Adapter. Это будет окончательной модификацией:MainActivity.java.
Вы должны установить ваш recyclerView layoutmanager в режим Gridlayout Mode, для этого просто измените ваш код, когда вы хотите установить ваш RecyclerView LayoutManager:
Примечание: замените количество колонок, которое вы хотите, на ###HELP###.