これは簡単な解決策のように思えますが、設定は
private RecyclerView mRecyclerView;
private RecyclerView.Adapter mAdapter;
private LinearLayoutManager mLayoutManager;
.... // More code
mRecyclerView = (RecyclerView) rootView.findViewById(R.id.recycler_view);
// Add item decoration
mRecyclerView.addItemDecoration(new SpacesItemDecoration(DIVIDER_SPACE));
// use this setting to improve performance if you know that changes
// in content do not change the layout size of the RecyclerView
mRecyclerView.setHasFixedSize(true);
// use a linear layout manager
mLayoutManager = new LinearLayoutManager(getActivity());
mLayoutManager.setReverseLayout(true); // THIS ALSO SETS setStackFromBottom to true
mRecyclerView.setLayoutManager(mLayoutManager);
アイテムを下から積み重ねるように設定しているようです
setStackFromBottom
をfalseに設定しようとしましたが、それは何もしませんでした。アイテムの順序を逆にするが、それでも上からデータを取り込む最良の方法は何でしょうか?代わりにカスタムコンパレータクラスを使用する必要がありますか?私は、これが別のクラスを作成するよりも簡単なプロセスになることを望んでいました。
setReverseLayout のドキュメントから
アイテムの走査とレイアウトの順序を逆にするために使用されます。これは、RTLビューのレイアウト変更と同様に動作します。 trueに設定すると、最初のアイテムがUIの最後に配置され、2番目のアイテムがその前に配置されるなど。水平レイアウトの場合、レイアウト方向に依存します。 trueに設定すると、RecyclerViewがLTRの場合、RTLからレイアウトされ、RecyclerView}がRTLの場合、LTRからレイアウトされます。
setStackFromBottom(boolean)
とまったく同じ動作を探している場合は、setStackFromEnd(boolean)
を使用します
したがって、LinearLayoutManagerインスタンスで setStackFromEnd(boolean) も使用してみてください。
LinearLayoutManager mLayoutManager = new LinearLayoutManager(getActivity());
mLayoutManager.setReverseLayout(true);
mLayoutManager.setStackFromEnd(true);
受け入れられた答えはうまく機能し、can not resolve method setReverseLayout
エラーを受け取っていたので、それを機能させるのに苦労しました。
その後、解決策を探した後、そこに愚かな間違いがあることがわかりました。 LinearLayoutManager
の代わりにRecyclerView.LayoutManager
を使用していました。
だから私はこの辺りの混乱を取り除こうと思ったので、答えとしてそれを置く必要がある。
LinearLayoutManager
の代わりにRecyclerView.LayoutManager
を使用しないでください
// Declare your RecyclerView and the LinearLayoutManager like this
private RecyclerView mRecyclerView;
private LinearLayoutManager mLayoutManager;
...
// Now set the properties of the LinearLayoutManager
mLayoutManager = new LinearLayoutManager(MainActivity.this);
mLayoutManager.setReverseLayout(true);
mLayoutManager.setStackFromEnd(true);
// And now set it to the RecyclerView
mRecyclerView.setLayoutManager(mLayoutManager);
mRecyclerView.setAdapter(yourAdapter);
Xmlを使用してこれを解決する効果的な方法を見つけました。
app:layoutManager="Android.support.v7.widget.LinearLayoutManager"
app:stackFromEnd="true"