2012-07-25 7 views
9

mam ten problem, mamdane Update w Arrayadapter

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

i pokazują dane zawarte w punktach, dane widzę w ListView, teraz chcę zaktualizować dane i zobaczyć to nowe dane

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          
} 

w pierwszej zmianie widzę dane są oczyszczone, ale w drugiej zmiany nie widzę nowe dane w ListView, sprawdzasz i pozycja nie pusty

nie wiem, gdzie jest błąd, możesz to zrobić Jestem ja? najlepsze regads Antonio

+0

Czy jesteś pewien, że 'getNewData()' zwraca listę zawierającą coś? –

+1

Proszę pisać getNewData(), również wystarczy wywołać 'arrayAdapter.notifyDataSetChanged();' raz na końcu. – Sam

Odpowiedz

11

Zakładając, że funkcja getNewData() zwraca ArrayList<CustomItem> można zmienić linię:

items=getNewData(); 

do

items.addAll(getNewData()); 

i sprawdzić, czy to działa?

+1

to działa dobrze dziękuję – Ant

7

ten sposób zaktualizować Adapter z nowymi danymi:

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

To powinno być akceptowane rozwiązanie. – Juanin

Powiązane problemy