2012-03-29 11 views
5

Ich habe eine ListView, die eine Unterklasse von BaseAdapter verwendet. Der Adapter verwendet Positionsindizes (Positionen) als IDs, und daher sind die IDs nicht stabil (eine der Operationen auf den zugrunde liegenden Daten wechselt zwischen zwei Datenelementen).BaseAdapter: hasStableIds() auf false setzen?

Muss ich in meinem Adapter hasStableIds() zu return false übersteuern?

am BaseAdapter hier Suche vorschlagen

, dass falsche der Standard

ist.

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; 
} 

Antwort

4

Nein, Sie brauchen nicht hasStableIds() außer Kraft zu setzen, wenn Sie das Standardverhalten wollen, weil es ein Verfahren zur Adapter-Schnittstelle, die die BaseAdapter implementiert durch ListAdapter und SpinnerAdapter und hat daher eine Standardimplementierung bieten Das.

Allerdings müssen Sie getItemId(int position) überschreiben, weil es eine abstrakte Methode der BaseAdapter-Klasse ist.

+1

Was sollten Sie für getItemId zurückgeben? –

Verwandte Themen