2010-03-21 19 views
5

Tengo un ListView con múltiples entradas elección donde algunos se comprueban desde el principio utilizandoArtículo incorrecto comprobado al filtrar ListView en Android

setItemChecked(position, true); 

combino esto con la opción de filtrado

setTextFilterEnabled(true) 

por lo que es fácil de encontrar una entrada específica en la lista.

El problema es que cuando filtro la lista, las entradas cambian de posición en la vista de lista. Tomemos por ejemplo tres entradas: 'A', 'B' y 'C' donde 'C' se verifica de antemano (es decir, la entrada en la posición 3 en la lista). Cuando escribo una 'C' en el teclado, solo se muestra la entrada 'C' (como estaba previsto). Ahora ya no se marca 'C', ya que la entrada se ha movido de la posición marcada 3 a la posición no marcada 1 en la lista.

Este comportamiento genera algunos efectos no muy bienvenidos en la aplicación. ¿Hay alguna manera de "mover la selección con el filtro", es decir, vincular el estado verificado a la entrada y no a su posición inicial en la lista? ¿O necesito encontrar un nuevo enfoque?

Gracias,

Linus

+0

Sufriendo el mismo problema. Sé que ha sido largo, pero ¿lograste resolver este problema? –

+0

@liorry: Realmente no lo recuerdo, pero creo que fui con la sugerencia en la respuesta aceptada. Demasiado tiempo :) – aspartame

+0

jaja OK. Pensé que tal vez puedes compartir el código ... Usé la sugerencia pero algo no funciona para mí ... bueno, gracias de todos modos;) –

Respuesta

3

mantener una lista de los artículos seleccionados, y siempre que la lista se vuelve a llenar de verificación si que id (no posición) existe en la lista, y establecer como seleccionado.

+0

¿Puedes explicarlo usando un código? – user2699728

0

Sí, este comportamiento se debe a que ListView mantiene la posición como una referencia a los elementos seleccionados. Esto significa que incluso para adaptadores con ID estables, la selección está vinculada a la posición (que se ha filtrado en su caso). Como se sugirió, implemente algunos mapas/conjuntos personalizados para almacenar los ID que están marcados y alimentarlos al adaptador.

Cuestiones relacionadas