2012-01-25 26 views
11

Używam adaptera list do wyświetlania różnych sklepów, gdy ktoś wybierze sklep, przeniesie go do nowego działania, gdzie może dodać sklep do ulubionych na tym ekranie.Adapter listy aktualizacji Androida OnResume

Istnieje przycisk Wstecz w tym połączeniu finish();, który powraca do ekranu z widokiem listy.

Problem polega na tym, że lista nie jest aktualizowana (tzn. Nie pokazuje, że sklep jest już dodany do ulubionych). Próbowałem ten kod, ale bez powodzenia:

@Override 
public void onResume() { 
    super.onResume(); 
    list.setAdapter(null);  
    updateMyList(); 
    adapter=new LazyAdapter(this, ((String[])names.toArray(new String[0])), 
     ((String[])status.toArray(new String[0]))); 
    list.setAdapter(adapter); 
} 

updateMyList() wywołuje API serwera i aktualizuje nazwy i tablice statusu.

Z tym kodem lista nie naprawdę aktualizacji ...

+0

http://stackoverflow.com/a/17333384/596555, może być pomocna – boiledwater

Odpowiedz

29

Powinieneś ustawić Adaptator w swoim onCreate() tylko wewnątrz onResume(), musisz tylko zadzwonić pod numer adapter.notifyDataSetChanged() z nową kolekcją danych. Spowoduje to odświeżenie listView z nową kolekcją danych.

0

Przed dodaniem nowego widoku do ListView usunąć wszystkie poprzedniego widoku

listView.removeAllViews(); 

a następnie dodać klasę adaptera z nowymi wartościami. Jedną z rzeczy jest upewnienie się, że twoje wartości są aktualizowane podczas powrotu z drugiej aktywności, a ten kod wywołuje.

1

Przede wszystkim u trzeba dodać listę sklepów do ArrayList, przesłać tę listę tablicy do ADAPTER następnie dodać go do widoku listy

list.setAdapter(adapter); 

będzie on wyświetlany w sklepach lista; wziąć onListItemClick kliknij tam dostaniesz listItem Id; za pomocą identyfikatora pozycji listy można podać takie zamiary, jak: Pobierz klasę metod java/setter i getter; przyjmij metodę getter jako statyczną, ustaw nazwę sklepu, co stworzyłeś w działaniu podrzędnym; zastąpić metodę o nazwie onBackPressed(); wewnątrz tej metody napisz w klasie nadrzędnej metodę

. wewnątrz tej metody

arraylist.add(javabeanClassname.getName()); 

dodać, że ArrayList do Adapter i napisać kod

list.setAdapter(adapter); 
4

użyć tego kodu:

myList.clear(); 
myList.add("your array list items");    
setListAdapter(adapter); 
adapter.notifyDataSetChanged(); 

Myślę, że to pomoże.

Dzięki ...

Powiązane problemy