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?

  • Control del color del borde de atenuación en ListViews
  • Cómo implementar Android Pull-to-Refresh
  • Android: wrap_content no funciona con ListView
  • Listview items Animación Parar mientras se desplaza
  • Cantidad total de elementos de lista en un ListView
  • ListView muy lento al desplazarse (usando ViewHolder / reciclado)
  • ¿Cómo puedo implementar un ListView sin ListActivity? (Utilice sólo Actividad)
  • Diferencia entre RowId y Position en el parámetro onItemLongClick
  • Snap de vista de lista al elemento
  • SetOnItemClickListener () no funciona en Custom ListView @ Android
  • OnItemCLickListener no funciona en listview
  • State_activated en pre Honeycomb Devices
  • 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.