android - setitemviewcachesize - recyclerview gridlayoutmanager
LinearLayoutManager setReverseLayout()== true pero los elementos se acumulan desde abajo (2)
La respuesta aceptada funciona bien y pasé por una situación difícil para hacerlo funcionar, ya que can not resolve method setReverseLayout
error de can not resolve method setReverseLayout
.
Luego, después de buscar soluciones, descubrí que había un error tonto. Estaba usando RecyclerView.LayoutManager
lugar de LinearLayoutManager
.
Así que pensé en eliminar las confusiones por aquí. Necesito ponerlo como una respuesta.
No use RecyclerView.LayoutManager
lugar 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);
Parece que sería una solución fácil, pero parece que esa configuración
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);
Parece que también establece los elementos para apilar desde la parte inferior
Traté de establecer setStackFromBottom
en falso pero eso no hizo nada, ¿cuál sería la mejor manera de invertir el orden de los elementos, pero todavía poblar desde la parte superior? ¿Debo usar una clase de comparador personalizado en su lugar? Esperaba que este fuera un proceso más fácil que crear otra clase.
de los documentos para setReverseLayout
Se usa para revertir el recorrido del elemento y el orden de disposición. Esto se comporta de forma similar al cambio de diseño de las vistas RTL. Cuando se establece en verdadero, el primer elemento se presenta al final de la interfaz de usuario, el segundo elemento se presenta antes, etc. Para los diseños horizontales, depende de la dirección del diseño. Cuando se establece en verdadero, si RecyclerView es LTR, que se distribuirá desde RTL, si RecyclerView} es RTL, se distribuirá desde LTR. Si está buscando exactamente el mismo comportamiento de
setStackFromBottom(boolean)
, usesetStackFromEnd(boolean)
Por lo tanto, intente también usar setStackFromEnd(boolean) en su instancia de LinearLayoutManager,
LinearLayoutManager mLayoutManager = new LinearLayoutManager(getActivity());
mLayoutManager.setReverseLayout(true);
mLayoutManager.setStackFromEnd(true);