Как установить пользовательские позиции в менеджере gridlayout recyclerview? - PullRequest
1 голос
/ 06 мая 2020

У меня двенадцать предметов. Я использую recyclerview вместе с GridLayoutmanager для отображения элементов. Мой текущий код

  RecyclerView.LayoutManager layoutManager = new GridLayoutManager(this,2, GridLayoutManager.HORIZONTAL, false);
        recyclerViewSlots.setLayoutManager(layoutManager);

имеет следующий формат List of items

Я хочу отображать элементы в следующем формате.

List of items

1 Ответ

1 голос
/ 06 мая 2020

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

Итак, если ваш полный код с назначением адаптера выглядит так:

List<Integer> numbers = new ArrayList();
for (int i = 1; i <= 12; i++) {
    numbers.add(i);
}
YourGridAdapter adapter = new YourGridAdapter(numbers);

RecyclerView.LayoutManager layoutManager = new GridLayoutManager(this,2, GridLayoutManager.HORIZONTAL, false);

RecyclerView recyclerView = findViewById(R.id.recyclerViewSlots);
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(layoutManager);

Затем вы можете просто изменить его на:

List<Integer> numbers = new ArrayList();
for (int i = 1; i <= 12; i++) {
    numbers.add(i);
}
Collections.reverse(numbers);
YourGridAdapter adapter = new YourGridAdapter(numbers);

RecyclerView.LayoutManager layoutManager = new GridLayoutManager(this,2, GridLayoutManager.HORIZONTAL, true);

RecyclerView recyclerView = findViewById(R.id.recyclerViewSlots);
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(layoutManager);

Если это вас не устраивает и у вас есть c количество элементов, вы также можете использовать GridLayout и поместив внутрь все 12 видов с ручным позиционированием в xml.

...