Android: stackFromBottom = "true" no parece funcionar perfectamente (revertir ListView con el adaptador)

Ok, déjame explicar lo que "no funciona perfectamente" significa.

Tengo un listview sin el android:stackFromBottom="true" parámetro. También tengo un ArrayAdapter con el getItem(position) regular getItem(position) . Llamo a mi servidor web, obtener los datos en un orden de fecha asc.

De esta manera el elemento en la posición 0 (arriba) de la lista tiene la fecha más pequeña. Y puedo desplazarme de arriba a abajo. Bueno.

He añadido android:stackFromBottom y ahora veo que ahora puedes empezar a escudarse desde abajo-> arriba, pero el elemento en la posición 0 sigue siendo el elemento superior y tiene la fecha más pequeña. Así que el adaptador no ha cambiado su orden.

La única manera de resolver esto es cambiar getItem(getCount()-1-position) dentro del adaptador. Sin embargo agrego y notifico el adaptador y el adaptador todavía agregará los artículos a la parte inferior.

Supongo que la estructura es ListView -> Adapter -> Row Views por lo que no importa el valor stackFromBottom , sólo hay un hijo, el adaptador. ¿Derecha?

De todos modos, ¿cómo puede tener un ListView con el adaptador en orden inverso?

5 Solutions collect form web for “Android: stackFromBottom = "true" no parece funcionar perfectamente (revertir ListView con el adaptador)”

Una manera elegante agradable de hacer esto es Adapter.getItem() su método de Adapter.getItem() para volver los artículos ellos mismos en orden inverso.

Este es un buen patrón para un Adapter ya que no requiere que sus datos se clasifiquen de forma diferente sólo con fines de visualización (podría haber sobrecarga en la clasificación de la lista o alguna otra razón por la que el pedido original es importante en otra parte de la aplicación) .

En su lugar, es el adaptador que muestra el cambio sin afectar al conjunto de datos subyacente.

Aquí es lo que usé:

 @Override public MyListItemClass getItem(int position) { return super.getItem(getCount() - 1 - position); } 

Esto se basa en la respuesta de @ mes a esta pregunta relacionada:

  • Mostrar nuevos elementos en la parte superior de un ListView

Echa un vistazo a ese hilo para alguna discusión sobre otras posibles soluciones.

He sobreestimado el android:stackFromBottom power. Lo que básicamente hace es similar a la "gravedad: fondo". No agrega los elementos en orden inverso, pero sólo hace que el contenido alineado a la parte inferior de la lista.

Todavía estoy buscando una solución de adaptador inverso.

Tal vez u debe utilizarlo con AbsListView.setTranscriptMode (int); Tengo una aplicación de chat y ofrezco dos modos de mostrar la conversación – desde abajo o desde arriba usando AbsListView.setStackFromBottom (boolean);

  LinearLayoutManager mLinearLayoutManager = new LinearLayoutManager(Application.get()); mLinearLayoutManager.setStackFromEnd(true); mLinearLayoutManager.setReverseLayout(true); list.setLayoutManager(mLinearLayoutManager); 

Pruebe esta esperanza esto le ayudará.

Sugeriría para utilizar el comparador para volver el objeto basado en la fecha en la cual orden siempre que usted quiere. Si lo hace, se asegurará de que los datos estén siempre en el orden en que desea y no en lo que el servidor envía. Puedes comprobar cómo usar ordenar aquí

  • Custom ListView con la fecha como SectionHeader (Custom SimpleCursorAdapter utilizado)
  • EditText en ListView pierde foco cuando se presiona en Android 4.x
  • Lista de preferencias sólo muestra el primer elemento
  • Actualizar TextView en ListView en tiempo real
  • Diferencia entre ScrollView y ListView
  • Lista de contactos con contacto La foto crea problemas de rendimiento
  • Android listview lazy loading
  • ¿Se llama OnItemSelectedListener.onNothingSelected en absoluto?
  • Desplazamiento anidado sin problemas (Android)
  • ¿Cómo actualizar la lista de adaptadores personalizados al instante en Android?
  • ListView onItemClick sólo obtiene el primer elemento
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.