2012-07-25 13 views
9

tengo este problema, heactualizar datos en ArrayAdapter

private ArrayList<CustomItem> items; 
private ArrayAdapter<CustomItem> arrayAdapter; 

muestro los datos presentes en artículos, estos datos que veo en vista de lista, ahora quiero actualizar datos y ver estos nuevos datos

if (!items.isEmpty()) { 
    items.clear(); // i clear all data 
    arrayAdapter.notifyDataSetChanged(); // first change 
    items = getNewData();// insert new data and work well 
    arrayAdapter.notifyDataSetChanged(); // second change          
} 

en el primer cambio que veo los datos se limpian, pero en segundo cambio no veo los nuevos datos en vista de lista, puedo comprobar y el artículo no lo hacen vacío

no sé dónde está el error, ¿puedes él lp yo? mejores regads Antonio

+0

¿Está seguro de que 'getNewData()' devuelve una lista que contiene algo? –

+1

Por favor, publique getNewData(), también solo necesita llamar 'arrayAdapter.notifyDataSetChanged();' una vez al final. – Sam

Respuesta

11

Suponiendo que la función getNewData() devuelve ArrayList<CustomItem>, se puede cambiar la línea:

items=getNewData(); 

a

items.addAll(getNewData()); 

y ver si funciona?

+1

funciona bien gracias – Ant

7

Así es como puedo actualizar el adaptador con nuevos datos:

  if (arrayAdapter == null) { 
       arrayAdapter = new CustomArrayAdapter(getActivity(), data); 
       listview.setAdapter(userAutoCompleteAdapter); 
      } else { 
       arrayAdapter.clear(); 
       arrayAdapter.addAll(newData); 
       arrayAdapter.notifyDataSetChanged(); 
      } 
+0

Debe ser la solución aceptada. – Juanin

Cuestiones relacionadas