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?

  • Tratando de coger un clic en android ListView item: android: descendantFocusability = "blocksDescendants" no funciona
  • Cómo deshacerse del resplandor de overscroll
  • Lista de Android Ver Arrastrar y soltar ordenar
  • ListView setOnItemClickListener no funciona agregando botón
  • Ancho del área seleccionable en ListView w / onListItemClick
  • Android listview: adapter.add (item)? O adapter.notifyDataSetChanged ()
  • Crash en ListView en AbsListView.obtainView para ListActivity
  • ¿Cómo cargar datos del servidor al listview cuando se desplaza?
  • 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.