2012-07-25 24 views
9

ich dieses Problem habe, habe ichaktualisieren Daten in Arrayadapter

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

i zeigen die Daten, die in den Punkten, diese Daten i in Listenansicht zu sehen, jetzt möchte ich Daten aktualisieren und sehen diese neuen Daten

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          
} 

in der ersten Änderung i die Daten sehen gereinigt werden, aber ich in der zweiten Änderung nicht sehen, die neuen Daten in Listenansicht, überprüfe ich, und das Element nicht leer

ich weiß nicht, wo ist der Fehler, kannst du er Ip mich? besten regads Antonio

+0

Sind Sie sicher, dass 'getNewData()' ist eine Liste der Rückkehr, die etwas enthält? –

+1

Bitte posten Sie getNewData(), auch müssen Sie nur 'arrayAdapter.notifyDataSetChanged();' einmal am Ende aufrufen. – Sam

Antwort

11

Unter der Annahme, die getNewData() Funktion ArrayList<CustomItem> zurückgibt, können Sie die Zeile:

items=getNewData(); 

zu

items.addAll(getNewData()); 

und sehen, ob das funktioniert?

+1

ist es Arbeit gut danke – Ant

7

Dies ist, wie ich den Adapter mit neuen Daten aktualisieren:

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

Es sollte die akzeptierte Lösung sein. – Juanin

Verwandte Themen