Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


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?

  • ¿Cómo puedo obtener los resultados de análisis de Android Wifi en una lista?
  • ¿Cómo obtener los dispositivos bluetooth como una lista?
  • ¿Ocultar la vista de pie en ListView?
  • Android Colores alternativos en ListView
  • Slide ListView Item en Android como la aplicación iPhone Mail
  • Enumerar actividad con encabezado, pie de página y vacía todo visible
  • Elemento de lista con CheckBox no se puede hacer clic
  • ¿Cómo puedo usar un listview sin extender ListActivity en mi clase?
  • SetEmptyView en ListView no mostrar su vista en una aplicación para Android
  • Android ListView relleno de contenido sin mover ListView altura?
  • Los elementos de vista de lista eliminan los mapas de bits de la memoria cuando el usuario se desplaza
  • ¿Cómo puedo inhabilitar el sonido de clic cuando se utiliza un elemento de vista de lista de Android / Java?
  • 6 Solutions collect form web for “Posición de retención en ListView después de llamar a notifyDataSetChanged”

    ¿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(); } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.