update studio refrescar llenar como columnas actualizar android listview android-arrayadapter

android - studio - listview no se actualiza con notifydatasetchanged() llamada



reload list view android (4)

¿Qué adaptador estás usando? Es claramente un caso en el que su adaptador no se actualiza después de configurar los datos en su variable de temperatura.

Este es mi código

listview =(ListView) findViewById(R.id.lv1); ArrayList<SClass> Monday = new ArrayList<SClass>(); SClass s1=new SClass(); s1.sName="samp"; s1.salary=1000; Monday.add(s1); temp=Monday; adapter = new CustomAdap(this, temp); listview.setAdapter(adapter);

El código anterior funciona bien. Pero cuando cambio mi código a este

listview =(ListView) findViewById(R.id.lv1); adapter = new CustomAdap(this, temp); SClass s1=new SClass(); s1.sName="samp"; s1.salary=1000; Monday.add(s1); temp=Monday; listview.setAdapter(adapter); adapter.notifyDataSetChanged();

Listview no muestra nada. ¿Cuál es el problema?


Busque un enlace a su vista referenciada en el archivo xml apropiado. O al menos verificar la existencia de dicho archivo xml.


Parece que está cambiando la colección con la que inicializó el adaptador. Cambiaría tu código de esta manera:

// initial setup listview =(ListView) findViewById(R.id.lv1); ArrayList<SClass> Monday = new ArrayList<SClass>(); adapter = new CustomAdap(this, Monday); listview.setAdapter(adapter); // change your model Monday here, since it is what the adapter is observing SClass s1=new SubjectClass(); s1.sName="samp"; s1.salary=1000; Monday.add(s1); // notify the list that the underlying model has changed adapter.notifyDataSetChanged();

Tenga en cuenta que si su CustomAdap era una subclase de ArrayAdapter, también podría haberlo hecho

// change your array adapter here SClass s1=new SubjectClass(); s1.sName="samp"; s1.salary=1000; adapter.add(s1); // notify the list that the underlying model has changed adapter.notifyDataSetChanged();

EDIT: entiendo más lo que quieres hacer ahora gracias a tu comentario. Es probable que desee que el adaptador reemplace su contenido con sus diferentes ArrayLists. Haría que tu CustomAdap sea una subclase de ArrayAdapter.

Entonces puedes utilizarlo de esta manera:

// replace the array adapters contents with the ArrayList corresponding to the day adapter.clear(); adapter.addAll(MONDAY); // notify the list that the underlying model has changed adapter.notifyDataSetChanged();


¿Por qué funciona en el primer código?

--- Porque está configurando los valores en la Lista temp y pasándole el adapter y lo muestra en la vista de lista.

¿Por qué no trabajar en el segundo código?

--- Porque está configurando la temperatura del adaptador mucho antes de establecer el valor en temp
segundo, su clase de adaptador podría no obtener el valor actualizado cuando establezca un nuevo valor en la temperatura ... porque la temperatura no es pública o no está a nivel de clase o no estática . Ponga la declaración de temperatura en el nivel raíz y pruebe.

Y por favor muestre su código completo tanto como sea necesario y Logcat si recibe alguna advertencia que también.