Cela semble être une solution facile, mais il semble que le réglage
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);
Semble également définir les éléments à empiler à partir du bas
J'ai essayé de définir setStackFromBottom
sur false, mais cela n'a rien fait. Quel serait le meilleur moyen d'inverser l'ordre des éléments tout en remplissant le nombre d'en haut? Devrais-je utiliser une classe de comparaison personnalisée à la place? J'espérais que ce serait un processus plus facile que de créer une autre classe.
à partir de la documentation pour setReverseLayout
Utilisé pour inverser le parcours et l'ordre de présentation des articles. Cela se comporte comme le changement de disposition pour les vues RTL. Lorsqu'il est défini sur true, le premier élément est placé à la fin de l'interface utilisateur, le deuxième élément le précède, etc. Pour les dispositions horizontales, cela dépend du sens de la présentation. Lorsqu'il est défini sur true, si RecyclerView est défini sur LTR, il sera mis en forme à partir de RTL. Si RecyclerView} est défini sur RTL, il sera mis en forme à partir de LTR. Si vous recherchez exactement le même comportement de
setStackFromBottom(boolean)
, utilisezsetStackFromEnd(boolean)
.
Donc, essayez aussi d’utiliser setStackFromEnd (boolean) sur votre instance de LinearLayoutManager,
LinearLayoutManager mLayoutManager = new LinearLayoutManager(getActivity());
mLayoutManager.setReverseLayout(true);
mLayoutManager.setStackFromEnd(true);
La réponse acceptée fonctionne bien et j’ai eu du mal à le faire fonctionner car j’obtenais une erreur can not resolve method setReverseLayout
.
Puis, après avoir cherché des solutions, j’ai trouvé qu’une erreur idiote était commise. J'utilisais RecyclerView.LayoutManager
au lieu de LinearLayoutManager
.
J'ai donc pensé que pour dissiper les confusions autour de moi, je devais le formuler comme réponse.
N'utilisez pas RecyclerView.LayoutManager
au lieu de LinearLayoutManager
// 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);
J'ai trouvé la méthode efficace pour résoudre cela en utilisant XML:
app:layoutManager="Android.support.v7.widget.LinearLayoutManager"
app:stackFromEnd="true"