2012-04-22 11 views
11

Ho reso il mio adattatore personalizzato esteso da BaseAdapter per mostrare un listview e così via ...Android: come creare un adattatore con ID stabili?

Voglio supportare la selezione singola e multipla, quindi deve avere ID stabili. Ho controllato con lo ADAPTER.hasStableIds() e il risultato è falso.

Ho scavalcato questo metodo per cercare di ottenere id di stalla senza fortuna.

public long getItemId(int position) { 
    return (long) getItem(position).hashCode(); 
} 

Qualche idea su come realizzarlo? grazie!

risposta

18

Override hasStableIds per restituire true.

Anche i dati sull'adattatore devono essere sovrascrivibili su hashCode() o su un tipo di campo ID da restituire su getItemId.

+1

Wow, soluzione semplice e facile. Grazie! – giorgiline

+5

hashCodes non sono univoci e l'implementazione predefinita utilizza la posizione come id. In che modo hashCode è correlato agli identificatori degli articoli? –

+0

@Petr: Da quello che ho capito "Stable Ids" significa che sei sempre in grado di identificare i tuoi oggetti/righe usando un numero univoco (ovvero gli Id non cambiano mai durante il ciclo di vita del tuo adattatore). Quindi, nello stesso modo in cui hai bisogno di hashCode univoci/non in conflitto per HashMap, puoi riutilizzare l'hashCode qui nella tua scheda. –

Problemi correlati