Я знаю, что RecyclerView
заменил старый функционал ListView
и GridView
. Я ищу очень простой пример, который показывает минимальную настройку сетки с использованием RecyclerView
. Я не ищу длинных объяснений стиля учебника, просто минимальный пример. Я предполагаю, что самая простая сетка, которая имитирует старый GridView, состоит из следующих функций:
- несколько ячеек в строке
- один вид в каждой ячейке
- реагирует на события клика
Ответы:
Короткий ответ
Для тех, кто уже знаком с настройкой a
RecyclerView
для составления списка , хорошая новость заключается в том, что создание сетки во многом одинаково. Вы просто используетеGridLayoutManager
вместо,LinearLayoutManager
когда вы настраиваетеRecyclerView
.Если вам нужна дополнительная помощь, посмотрите следующий пример.
Полный пример
Ниже приведен минимальный пример, который будет выглядеть как на рисунке ниже.
Начните с пустой деятельности. Вы будете выполнять следующие задачи, чтобы добавить
RecyclerView
сетку. Все, что вам нужно сделать, это скопировать и вставить код в каждый раздел. Позже вы можете настроить его под свои нужды.Обновите зависимости Gradle
Убедитесь, что в вашем приложении есть следующие зависимости
gradle.build
:Вы можете обновить номера версий до самых актуальных .
Создать макет деятельности
Добавьте
RecyclerView
к вашему XML-макету.activity_main.xml
Создать макет ячейки сетки
Каждая ячейка в нашей
RecyclerView
сетке будет иметь только одну ячейкуTextView
. Создайте новый файл ресурсов макета.recyclerview_item.xml
Создать адаптер
RecyclerView
Нужен адаптер для заполнения представлений в каждой ячейке с вашими данными. Создайте новый файл Java.MyRecyclerViewAdapter.java
Ноты
GridView
и является общей потребностью. Вы можете удалить этот код, если он вам не нужен.Инициализируйте RecyclerView в действии
Добавьте следующий код к вашей основной деятельности.
MainActivity.java
Ноты
ItemClickListener
что мы определили в нашем адаптере. Это позволяет нам обрабатывать события щелчка в ячейкеonItemClick
.Законченный
Вот и все. Вы должны быть в состоянии запустить ваш проект сейчас и получить что-то похожее на изображение вверху.
Продолжается
Закругленные углы
Авто-монтаж колонн
Дальнейшее обучение
источник
recyclerView.setLayoutManager(new GridLayoutManager(this, numberOfColumns));
Хотя я , как и оценить Suragch ответ «S , я хотел бы оставить записку , потому что я обнаружил , что кодирование адаптера (
MyRecyclerViewAdapter
) , чтобы определить и выставить метод прослушивателяonItemClick
не лучший способ сделать это, из - за не используя класс инкапсуляцию правильно. Поэтому я предлагаю позволить адаптеру обрабатывать только операции прослушивания (это его цель!) И отделить их от действия, которое использует адаптер (MainActivity
). Итак, вот как я бы установил класс Adapter:MyRecyclerViewAdapter.java
Обратите внимание, что
onItemClick
метод, который теперь определен вMyRecyclerViewAdapter
этом месте, - это место, где вы хотели бы закодировать свои задачи для полученного события / действия.Для того чтобы завершить это преобразование, нужно сделать лишь небольшое изменение: Activity больше не нужно реализовывать
MyRecyclerViewAdapter.ItemClickListener
, потому что теперь это полностью выполняет Adapter . Это будет окончательная модификация:MainActivity.java
источник
Activity
. Потому что только это кликни слушатель может узнать оActivity
взглядах и другихFragments
,Activities
и т.д. Адаптер может отправлять событие нажатия на верхний уровень. Он должен иметь интерфейсItemClickListener
с таким количеством событий, которое может генерировать множество представлений адаптера событий. Это решение было написано еще раньше: stackoverflow.com/a/40563598/2914140 .Вам нужно перевести менеджер макета RecyclelerView в режим Gridlayout, для этого просто измените свой код, когда хотите. Установите RecyclerView LayoutManager:
Примечание: замените желаемое количество столбцов на ### HELP ###
источник