Заказать элементы в 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() при создании объекта, чтобы вы были уверены, что значение уникально и точно покажет, когда оно было создано.