tag name icon description application android listview scroll

android - name - meta tags list html



Vista de lista Desplácese hasta el final de la lista después de actualizar la lista (8)

El modo de transcripción es lo que desea y Google Talk y la aplicación de SMS / MMS lo utilizan. ¿Está llamando correctamente a notifyDatasetChanged () en su adaptador cuando agrega elementos?

Me gustaría asegurarme de que la lista se desplace hasta el final, después de haber actualizado la vista de lista utilizando 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


He tenido éxito al usar esto en respuesta a un clic en el botón, así que supongo que también puede usarlo después de actualizar sus contenidos:

myListView.smoothScrollToPosition(theListAdapter.getCount() -1);


Necesita usar estos parámetros en su vista de lista:

  • Desplácese lv.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);

  • Establezca el encabezado de la lista en la parte inferior lv.setStackFromBottom(true);

También puede establecer estos parámetros en XML, por ejemplo. Me gusta esto:

<ListView ... android:transcriptMode="alwaysScroll" android:stackFromBottom="true" />


Para obtener esto en un ListFragment:

getListView().setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL); getListView().setStackFromBottom(true);`

Agregó esta respuesta porque si alguien hace una búsqueda en Google para el mismo problema con ListFragment, simplemente encuentra esto ...

Saludos


Suponiendo que sepa cuándo han cambiado los datos de la lista, puede decirle a la lista manualmente que se desplace a la parte inferior configurando la selección de lista en la última fila. Algo como:

private void scrollMyListViewToBottom() { myListView.post(new Runnable() { @Override public void run() { // Select the last row so it will scroll into view... myListView.setSelection(myListAdapter.getCount() - 1); } }); }


Una combinación de TRANSCRIPT_MODE_ALWAYS_SCROLL y setSelection lo hizo funcionar para mí

ChatAdapter adapter = new ChatAdapter(this); ListView lv = (ListView) findViewById(R.id.chatList); lv.setTranscriptMode(AbsListView.TRANSCRIPT_MODE_ALWAYS_SCROLL); lv.setAdapter(adapter); adapter.registerDataSetObserver(new DataSetObserver() { @Override public void onChanged() { super.onChanged(); lv.setSelection(adapter.getCount() - 1); } });


Utilizando: establece el encabezado de la lista a la parte inferior lv.setStackFromBottom(true);

Trabajó para mí y la lista se desplaza al final automáticamente cuando se pone por primera vez en visibilidad. La lista luego se desplaza como debería con TRANSCRIPT_MODE_ALWAYS_SCROLL .


yo suelo

setTranscriptMode(ListView.TRANSCRIPT_MODE_NORMAL);

para agregar entradas en la parte inferior, y las entradas más antiguas se desplazan fuera de la parte superior, como una transcripción de chat