Me gustaría asegurarme de que la lista se desplaza hasta el final, después de haber actualizado la vista de lista usando listAdapter, para que muestre el último elemento ingresado en la lista. Cómo puedo hacer esto ?
Intenté esto pero no tuve suerte:
lv.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
gracias
Respuestas:
Suponiendo que sabe cuándo han cambiado los datos de la lista, puede indicarle manualmente que se desplace hacia abajo al establecer la selección de la lista en la última fila. Algo como:
fuente
Debe usar estos parámetros en su vista de lista:
Desplazarse
lv.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
Establecer el encabezado de la lista al final
lv.setStackFromBottom(true);
También puede establecer estos parámetros en XML, por ejemplo. Me gusta esto:
fuente
Una combinación de TRANSCRIPT_MODE_ALWAYS_SCROLL y setSelection me hizo funcionar
fuente
He tenido éxito al usar esto en respuesta a un clic en el botón, así que supongo que también puedes usarlo después de actualizar tu contenido:
fuente
Para obtener esto en un ListFragment:
Agregó esta respuesta porque si alguien busca en Google el mismo problema con ListFragment, simplemente encuentra esto ...
Saludos
fuente
Uso: establezca el encabezado de la lista en la parte inferior
lv.setStackFromBottom(true);
Funcionó para mí y la lista se desplaza hacia abajo automáticamente cuando se hace visible por primera vez. La lista se desplaza como debería con
TRANSCRIPT_MODE_ALWAYS_SCROLL
.fuente
yo suelo
para agregar entradas en la parte inferior, y las entradas más antiguas se desplazan desde la parte superior, como una transcripción de chat
fuente
getListView().smoothScrollToPosition(getListAdapter.getCount() - 1);
al inicio para desplazarse hasta el final al comienzo de la actividad.La solución más simple es:
fuente
El modo de transcripción es lo que desea y lo utilizan Google Talk y la aplicación de SMS / MMS. ¿Está llamando correctamente a notifyDatasetChanged () en su adaptador cuando agrega elementos?
fuente