【问题标题】:Order items on RecyclerView using StaggeredGridLayoutManager使用 StaggeredGridLayoutManager 在 RecyclerView 上订购商品
【发布时间】:2018-09-20 04:39:51
【问题描述】:

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

staggered view

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

1 2

3 4

5

等等。

这是我初始化 RecyclerView、适配器和布局管理器的代码 sn-p:

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);

但它没有显示任何内容,只是一个空白布局。

编辑:任何其他方式都可以做到这一点,图书馆,另一个想法等。

【问题讨论】:

    标签: android android-recyclerview staggeredgridlayoutmanager


    【解决方案1】:

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

    【讨论】:

    • 非常感谢,我对此进行了调查,并使用冒泡排序对项目进行了排序,现在项目以正确的顺序显示,看起来在此之前它们没有在数据库中排序和我想的一样。
    猜你喜欢
    • 2019-05-29
    • 2020-06-28
    • 1970-01-01
    • 2011-06-12
    • 2017-01-29
    • 1970-01-01
    • 2016-08-19
    • 1970-01-01
    • 2012-08-18
    相关资源
    最近更新 更多