我正在使用RecyclerView来显示项目网格。我想颠倒这种布局的构造。
setStackFromEnd() 与 LinearLayoutManager 完美配合,但 GridLayoutManager 不支持,如上所述{ {3}}。
使用RecyclerView构建反向网格的最佳替代方法是什么?
答案 0 :(得分:2)
您是否尝试将反向布局设置为GridLayoutManager构造函数,例如:
mRecyclerView.setLayoutManager(new GridLayoutManager(context, 6, LinearLayoutManager.VERTICAL, true));
布尔值用于反向布局。
希望这有帮助。
抱歉我的英文。
答案 1 :(得分:0)
您应该完全按照您链接的Android文档提出建议:
stackFromEnd
不支持
GridLayoutManager
。考虑使用setReverseLayout(boolean)
。
修改您的代码以使用setReverseLayout
。
答案 2 :(得分:0)
假设我们在RecyclerView上的列表数量是有序的,看起来像这样: 1个 2 3 4 5
当我们使用“ setReverseLayout(true)”时,结果如下: 5 4 3 2 1
但是,当我们想在此recyclerview上动态添加新项目时,它将添加该项目作为最后一个项目,并且从末尾开始堆叠。 5 4 3 2 1个 6 因此,“ setStackFromEnd(true)”在这里出现。它说的是recyclerview;将新项目堆叠到开头。让我们看一下recyclerview: 6 5 4 3 2 1个 setStackFromEnd不适用于gridlayout,这就是滚动在屏幕末端的原因。
答案 3 :(得分:0)
您可以撤消任何布局管理器
Step1-转到您的 ArrayList
Step2-反向Collections.reverse(mArrayList);
Step2-设置适配器
答案 4 :(得分:0)
当我遇到同样的问题时,我尝试使用RecyclerView.reverseLayout()
,但是当项目不统一时,它总是在顶部留一个空白。
最适合我的解决方案是在kotlin中使用arraylist reverse
方法,类似于Java中的Collection.reverse(arraylist)
。
因此,只需在数据集上调用dataList.reverse()
,然后再将其传递给适配器即可。
注意:如果使用适配器位置从另一个活动中加载项目,则也必须在那儿反转数据集。
例如,当您单击RecyclerView项时,您正在加载DetailsActivity,请确保在获取被单击的项之前也反转了DetailsActivity中的数据集,否则您将获得错误的项。