Implemento el ActionMode en mi aplicación Android con ActionBarSherlock. Con ABS es posible construir un ActionMode antes de API 11 pero la manera fácil con: listView.setMultiChoiceModeListener(new MultiChoiceModeListener() ...
no es para aplicaciones antes de API 11. ¿Alguien tiene una buena manera de crear un menú de contexto del modo de acción antes de API 11? Quiero hacer un clic largo en un elemento de la lista e iniciar el modo de acción en el que puedo hacer clic en varios elementos. Con un simple clic, muestro un sitio de detalles del elemento de la lista. Uso el método registerForContext()
pero esto hace un clic simple y largo.MultiChoiceMode before API 11
Tiene a alguien un buen consejo para mí.
EDITAR
La solución para mi cuestión siguió: En un artículo largo haga clic en i activa el modo de acción y guardar esto en una variable. En el método de clic sobre el punto i implementar una instrucción if-else con:
if(actionMode == null)
{
// open new activity or update second fragment
showDetails(itemPosition);
}
else
{
// update ui or close CAB if no item selected
showCAB(itemPosition);
}
El método showCAB (posición) actualizar el contador de selectedItem, fondo elemento más destacado y así sucesivamente.
Gracias por la respuesta. Encontré esta página también ayer e implemento la solución. Cambio el onItemClickListener a un onItemLongClickListener y esto no funciona tan bien. Puedo iniciar el Modo de Acción después de hacer un clic corto en un Artículo, cerrar mi actividad que se abre y luego presionar de nuevo sobre el ítem. La solución no es perfecta, pero es buena para empezar. – Happo
Si entiendo bien su problema, es que todavía abre su actividad con un simple clic en los elementos de ListView. Luego, en su 'onItemLongClickListener', puede establecer' listView' 'onItemClickListener' en nulo, para que no abra ninguna actividad.Asegúrese de establecerlo de nuevo en el 'onItemClickListener' original (puede guardarlo en una variable) en' onDestroyActionMode' de la clase 'ModeCallback' – MagicMicky
Antes de que se llame al método onItemClick, el evento pasó el método onItemLongClick. Este método devuelve un valor booleano, por lo tanto, si devuelvo true, se manejó el evento y no llegó al método onItemClick. Si devuelvo falso no manejé el clic largo y hago otro tipo de clic. Encontré esto en algunas otras preguntas, pero tu solución también es posible. Lo pruebo un poco más tarde hoy. – Happo