Posición de retención en ListView después de llamar a notifyDataSetChanged

Estoy utilizando un OnScrollListener para agregar elementos dinámicamente a un ListView cuando el usuario se desplaza a la parte inferior. Después de agregar los datos al adaptador y llamar a notifyDataSetChanged sin embargo, el ListView vuelve a la parte superior. Idealmente, me gustaría conservar la posición en el ListView. ¿Alguna idea sobre cómo debería hacer esto?

¿Podría ser esto lo que quieres?

// save index and top position int index = mList.getFirstVisiblePosition(); View v = mList.getChildAt(0); int top = (v == null) ? 0 : v.getTop(); // notify dataset changed or re-assign adapter here // restore the position of listview mList.setSelectionFromTop(index, top); 

La situación:

Cuando configura un adaptador a su listview, actualiza su estado. Por lo tanto, normalmente se desplaza automáticamente.

La solución:

Asigne un adaptador a listview si no lo tiene, sino sólo actualiza el conjunto de datos del adaptador asignado, no vuelva a establecerlo en su listview.

Un tutorial detallado se explica en el siguiente enlace;

Android ListView: Mantenga su posición de desplazamiento cuando actualice

¡Buena suerte!

Implementé el postDelayed y estaba recibiendo parpadeo al actualizar. Busco un poco más y descubrí que estaba haciendo cosas malas. Básicamente no debería crear un nuevo adaptador cada vez que quisiera cambiar los datos. Terminé haciéndolo de esta manera y funciona:

 //goes into your adapter public void repopulateData(String[] objects) { this.objects = null; this.objects = objects; notifyDataSetChanged(); } //goes into your activity or list if (adapter == null) { adapter = new Adapter(); } else { adapter.repopulateData((String[])data); } 

Espero que esto ayude.

estoy usando

ListView.getFirstVisiblePosition

Para mantener la última posición visible.

Ir con el modo de transcripción de listview.

Prueba esto

  boolean first=true; protected void onPostExecute(Void result) { if (first == true) { listview.setAdapter(customAdapter); first=false; } else customAdapter.notifyDataSetChanged(); } 
  • ListView onItemLongClickListener no impide que los grifos de enlace
  • Uso del selector de un diseño para cambiar las propiedades de su hijo
  • La vista de texto no se desplaza dentro de la lista personalizada
  • Herramientas de ListView: listitem no funciona en android studio 2.2 stable channel
  • SetEmptyView en ListView no mostrar su vista en una aplicación para Android
  • Android: Actualizar ListView Items cada 1 minuto
  • La mejor manera de manejar múltiples llamadas getView desde dentro de un adaptador
  • ¿Ocultar la vista de pie en ListView?
  • Columnas en ListView Android
  • Problemas con el widget android-pulltorefresh
  • Layout_width de un ListView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.