如何在Recyclerview的GridLayoutManager中设置setStackFromEnd(true)?

5
我想要一个网格布局,它能够从最后加载数据,我使用了以下代码实现:

我希望Grid布局可以倒序加载数据,所以我使用了下面的代码:

GridLayoutManager recyclerViewLayoutManager = new GridLayoutManager(getActivity(), 3);
//       LinearLayoutManager recyclerViewLayoutManager = new LinearLayoutManager(getActivity());
recyclerViewLayoutManager.setStackFromEnd(true);
lv_explore.setLayoutManager(recyclerViewLayoutManager);

它给我返回了这样的错误

java.lang.UnsupportedOperationException: GridLayoutManager does not support stack from end. Consider using reverse layout
at android.support.v7.widget.GridLayoutManager.setStackFromEnd(GridLayoutManager.java:107)
at in.co.ans.jalsounique.FragmentExplore.onCreateView(FragmentExplore.java:86)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2080)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1108)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1290)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1677)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:536)
at android.os.Handler.handleCallback(Handler.java:746)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)

当我使用LinearLayoutManager时,它能够工作,但我需要网格视图,请建议什么是更好的方法?
1个回答

1
这就是它的含义:setStackFromEnd不支持。它只适用于列表,而不适用于网格。
考虑使用反向布局。
因此,你需要在GridLayoutManager上调用setReverseLayout(true)来解决这个问题。
这意味着你需要完全颠倒列表的顺序。如果你要添加的项目应该显示在底部,那么你必须将它们插入到开头。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接