2012-04-22 17 views
11

que he hecho mi propio adaptador personalizado extendido desde BaseAdapter para mostrar una vista de lista y así sucesivamente ...Android: ¿Cómo hacer un adaptador con identificadores estables?

quiero que admite la selección de uno y varios, por lo que debe tener las identificaciones estables. Lo he comprobado con el ADAPTER.hasStableIds() y el resultado es falso.

He anulado este método para tratar de obtener identificaciones de establos sin suerte.

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

¿Alguna idea de cómo hacerlo? gracias!

Respuesta

18

Anular hasStableIds para devolver verdadero.

También los datos en su adaptador deben anular hashCode() o tienen algún tipo de campo de identificación que se devolverá en getItemId.

+1

Guau, solución simple y fácil. ¡Gracias! – giorgiline

+5

Los hashCodes no son únicos y la implementación predeterminada usa la posición como id. ¿Cómo se relaciona hashCode con los identificadores de elementos? –

+0

@Petr: por lo que entendí, "Ids estable" significa que siempre puedes identificar tus objetos/filas usando un número único (también conocido como Ids nunca cambia durante el ciclo de vida de tu adaptador). Por lo tanto, de la misma forma que necesita hashCodes únicos/que no estén en conflicto para HashMap, puede reutilizar el código hash aquí en su Adaptador. –

Cuestiones relacionadas