Tengo un ListView que normalmente es singleChoice
choiceMode
. Cuando el usuario presiona un elemento por mucho tiempo, quiero ingresar a un modo de acción que permite seleccionar varios elementos para que puedan realizar una acción en los elementos seleccionados.Cambiar ListaVer elecciónMode de single Escoger a múltiple EscogerModal
Puedo configurar el ListView
de modo que esté en el modo singleChoice
y el usuario puede seleccionar elementos de la lista para mostrar un fragmento de detalles al lado y mostrar el elemento de la lista en su estado activado.
También soy capaz de configurar el ListView
por lo que es en el multipleChoiceModal
choiceMode
y realizar una pulsación larga en un artículo inicia el modo de acción y permite múltiples selecciones, pero ahora el ListView no permitirá que una única selección en la normalidad modo (sin modo de acción).
¿Cómo puedo tener un ListView que está en el modo singleChoice
y luego pasarlo al modo multipleChoiceModal
cuando se presiona un elemento por un tiempo?
Esto es lo más cerca que he sido capaz de llegar a:
- establecer el ListView a
singleChoice
modo - establecer el ListView de
OnItemLongClickListener
y en ese oyente:- establecer el ListView de
OnItemLongClickListener
anull
- establece el ListView
choiceMode
amultipleChoiceModal
- llame al
view.performClick()
en el elemento que se presionó durante mucho tiempo.
- establecer el ListView de
Este enfoque tiene un par de problemas.
- El modo de acción no se inicia hasta la segunda vez que presiono prolongadamente un elemento.
- Cuando llamo al
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
enonDestroyActionMode
obtengo unjava.lang.StackOverflowError
porque ese método también termina destruyendo el modo de acción (pero aún no hemos regresado del destructor).
lo que debería ocurrir después de introducir multipleChoiceMode, selecciona 2 y el volver a singleCheckMode? – user387184