2012-03-29 18 views
5

Mam ListView, który używa podklasy BaseAdapter. Adapter używa indeksów pozycji (pozycji) jako identyfikatorów, dzięki czemu identyfikatory nie są stabilne (jedna z operacji na bazowych danych jest zamiana między dwoma elementami danych).BaseAdapter: set hasStableIds() na false?

Czy muszę zastąpić mój adapter hasStableIds() na return false?

Patrząc na BaseAdapter tutaj sugerują

że fałszywa jest domyślnym

.

http://www.netmite.com/android/mydroid/frameworks/base/core/java/android/widget/BaseAdapter.java

// Is this required? Isn't this the default? 
@Override 
public final boolean hasStableIds() { 
    return false; 
} 

@Override 
public final long getItemId(int position) { 
    return position; 
} 

Odpowiedz

4

No nie trzeba zastąpić hasStableIds() jeśli chcesz domyślne zachowanie ponieważ jego metoda Adapter interfejsu której BaseAdapter realizuje poprzez ListAdapter i SpinnerAdapter i dlatego musi zapewnić realizację domyślną że.

Jednak trzeba zastąpić getItemId(int position), ponieważ jest to abstrakcyjna metoda klasy BaseAdapter.

+1

co powinieneś zwrócić dla getItemId? –

Powiązane problemy