Можно ли свободно задать, на какое количество колонок будет разделён экран — на три или четыре?
Каждый элемент в зависимости от значений width и height в своём собственном Bean вычисляет, сколько колонок он занимает — одну, две или три.
Можно реализовать группировку, для этого достаточно установить значение в groupId в Bean.
Посмотрите на код ниже, его легко понять.
Использование:
// 40 элементов данных
ArrayList<PictureBean> mPS = PictureFactory.getPictures(140); // Обратите внимание, что Bean должен реализовывать интерфейс ICVURatioBean.
Collections.sort(mPS, new PictureCompartor()); // 0. Важно! Сначала отсортировать данные по целевой компоновке!
int columns = 6; // 1. На сколько колонок разделить экран
CVURatioUtil.ratio(columns, mPS); // 2. Обработать данные
CVURatioLayoutManager mGridLytManager = new CVURatioLayoutManager(this, columns, mPS); // 3. Указать менеджер компоновки
PictureAdapter mAdapter = new PictureAdapter(mPS); // Обычный адаптер
RecyclerView mRecyclerView = (RecyclerView) findViewById(R.id.rlv);
mRecyclerView.setLayoutManager(mGridLytManager);
mRecyclerView.setAdapter(mAdapter);
Принцип работы:
В GridLayoutManager RecyclerView есть объект SpanSizeLookup, который используется для управления количеством колонок, занимаемых каждым элементом. Нужно заранее рассчитать, сколько колонок должен занимать каждый элемент, а затем просто взять это значение.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )