support setitemviewcachesize recyclerview getadapter android layout-manager reverse android-recyclerview

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) , use setStackFromEnd(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);