Заказать элементы в RecyclerView с помощью StaggeredGridLayoutManager

Я создаю приложение, в котором пользователи создают элементы с изображением, и они отображаются в виде списка. Похоже на Google Keep, где созданные элементы имеют не одинаковую высоту, а одинаковую ширину, распределенную в два столбца. Порядок, в котором создаются элементы, важен и должен быть упорядочен таким образом сверху вниз. Как показано на фотографии, каждое число представляет порядок, в котором были созданы элементы, оно не упорядочено ожидаемым образом.

шахматный вид

Есть ли способ, которым вы можете определить, как элементы должны быть упорядочены? Я хотел бы заказать их:

1 2

3 4

5

и так далее.

Это фрагмент кода, где я инициализирую RecyclerView, адаптер и менеджер раскладок:

RecyclerView recyclerView = findViewById(R.id.recyclerView);
AdapterRecyclerView adapterRecyclerView = new AdapterRecyclerView(getContext(), list);
recyclerView.setAdapter(adapterRecyclerView );
StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
recyclerView.setLayoutManager(staggeredGridLayoutManager);

Я уже пробовал с

staggeredGridLayoutManager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_MOVE_ITEMS_BETWEEN_SPANS);

и это не сработало, я тоже пытался

staggeredGridLayoutManager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_NONE);

но это ничего не показывало, только пустой макет.

Редактировать: любой другой способ сделать это будет объявлен, библиотека, другая идея и т. Д.

1 ответ

Решение

Вы можете попробовать установить одно значение для элемента, который указывает положение и упорядочить список, прежде чем устанавливать его на адаптер. Я рекомендую использовать длинное значение и устанавливать его с помощью System.currentTimeMillis() при создании объекта, чтобы вы были уверены, что значение уникально и точно покажет, когда оно было создано.

Другие вопросы по тегам