使用StaggeredGridLayoutManager在RecyclerView上订购商品

时间:2018-04-10 14:02:59

标签: android android-recyclerview staggeredgridlayoutmanager

我正在创建一个应用程序,用户使用图像创建元素,并将它们显示为列表。它看起来像Google Keep,其中创建的元素不具有相同的高度但宽度相同,分布在两列中。创建元素的顺序很重要,必须以这种方式从上到下排列。如照片所示,每个数字代表元素的创建顺序,不按预期方式排序。

staggered view

有没有什么方法可以定义元素的排序方式?我想订购它们:

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 个答案:

答案 0 :(得分:0)

您可以尝试在指示位置的元素上设置一个值,然后在将列表设置为适配器之前对其进行排序。我建议您使用long值并在创建对象时使用System.currentTimeMillis()进行设置,这样您就可以确保该值是唯一的,并且将准确指示何时创建。