2010-03-29 10 views

Respuesta

71

Trate

listView.post(new Runnable(){ 
    public void run() { 
    listView.setSelection(listView.getCount() - 1); 
    }}); 

El 'post' parece ser necesario en algún momento de mi experiencia, sobre todo si ha actualizado recientemente la lista.

+1

esto funciona genial. Intenté 'android: stackFromBottom =" true "' antes y el problema es que si hubiera solo un elemento en mi vista de lista, estaría en la parte inferior de la pantalla. Gracias – philipp

+0

Nota: si la altura del último elemento es mayor que la altura de la vista de lista, la parte superior del último elemento se alineará entre los primeros de la lista, es decir, la parte inferior del elemento no será visible. Es por eso que la solución stackFromBottom es descrita por Ribose y es mejor para la funcionalidad de chat. –

+0

¡Funcionó como un encanto! También probé stackFromBottom = "true" pero como no estaba borrando la lista, no funcionó para mi situación. (Al menos creo que es por eso). – BostonGeorge

81

Sé que esto ha sido respondido y usted tomó la respuesta y fue hace más de un año. Pero una mejor forma de hacerlo es el Modo Transcripción. Para obtener una demostración, consulte la demostración de la API de Android en Vistas> Listas> Transcripción.

Debería configurar lo siguiente en su vista de lista en el XML.

android:stackFromBottom="true" 
android:transcriptMode="alwaysScroll" 

Siempre va a trabajar cada vez que llame notifyDataSetChanged(). Puede establecer android:transcriptMode en normal en su lugar si desea obtener un resultado aún mejor para las aplicaciones de chat: se desplazará hacia abajo solo si el último elemento ya estaba a la vista. De esta forma, los usuarios pueden ver el chat anterior sin interrupción cuando otros usuarios chatean.

+5

¡Muchas gracias! android: transcriptMode is magical :) ¡me salvaste! – Ciprian

+0

Realmente es una muy buena opción. Gracias :) – Dinesh

+0

¡genial! Funciona ! – Penzzz

1

Sé que es muy tarde para responder, pero puede ser que ayude a alguien. El uso de android:transcriptMode="alwaysScroll" forzará a la vista de lista a desplazarse hacia abajo (como aquí hemos usado android:stackFromBottom="true") incluso si intenta desplazarse hacia arriba, lo que generalmente requiere la mayor parte del tiempo. Por lo tanto, en lugar de android:transcriptMode="alwaysScroll, puede usar android:transcriptMode="normal, que se comportará de manera similar al requisito de la aplicación de chat y no forzará la lista de desplazamiento siempre que el usuario quiera ver el contenido en la parte superior.

Cuestiones relacionadas