В шахматном порядке Alike Recycler View - PullRequest
0 голосов
/ 02 октября 2018

Я хочу реализовать список элементов, что-то вроде этого, как показано ниже.

  1. , если общее количество элементов = 1 (показать полный элемент)
  2. , если общее количество элементов = 2 (показать 2 элемента в 2 столбцах)
  3. , если общее количество элементовitems = 3 (показать 3 элемента, 2 в столбце № 1 и 1 в столбце № 2)
  4. и т. д. *

4 cases

В случае 5 и 6 пунктов раздел должен прокручиваться, как показано ниже

5 case

6 case

enter image description here

Я хочу реализовать это, как один из моих разделов в моем приложении.Как правильно реализовать это в Android, мне нужна отправная точка.Это возможно с точки зрения переработчика?Пожалуйста, поделитесь любой библиотекой или проектом github, если таковой имеется.

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Да, вы можете достичь этого с помощью StaggeredLayoutManager, в котором вам нужно установить счетчик промежутков & Ориентация в соответствии с размером данных, как показано ниже:

enter code private void setSpanValue() {
    StaggeredGridLayoutManager staggeredGridLayoutManager;
    if (modelArrayList.size() == 1) {
        staggeredGridLayoutManager = new StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.HORIZONTAL);
        recyclerView.setLayoutManager(staggeredGridLayoutManager);
    } else if (modelArrayList.size() == 2) {
        staggeredGridLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
        recyclerView.setLayoutManager(staggeredGridLayoutManager);
    } else if (modelArrayList.size() == 3) {
        staggeredGridLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
        recyclerView.setLayoutManager(staggeredGridLayoutManager);
    } else if (modelArrayList.size() == 4) {
        staggeredGridLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
        recyclerView.setLayoutManager(staggeredGridLayoutManager);
    } else {
        staggeredGridLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.HORIZONTAL);
        recyclerView.setLayoutManager(staggeredGridLayoutManager);
    }

    recyclerView.setLayoutManager(staggeredGridLayoutManager);
    recyclerView.hasFixedSize();
    Adapter adapter = new Adapter(this, modelArrayList, checkEvenOrOdd(modelArrayList.size()));
    recyclerView.setAdapter(adapter);
}

Для более чем 4 элементов вам нужно проверить, являются ли данные четными или нечетными, как показано ниже:

private boolean checkEvenOrOdd(int n) {
    if ((n % 2) == 0) {
        // number is even
        return true;

    } else {
        // number is odd
        return false;
    }
}

Проверьте мой пример проекта, он решит вашу проблему https://github.com/DanishAmjad12/HetrogenousLayout

0 голосов
/ 02 октября 2018

Это возможно с использованием пользовательского макета управления.мы можем изменить layout-manger в соответствии с нашими потребностями.

Я использовал DelegateAdapter из vlayout git lib, и это действительно здорово работает.Проверьте ссылку ниже для получения более подробной информации.

https://github.com/alibaba/vlayout

...