Tengo un ListView con oyentes para un clic largo y un clic normal.
¿Por qué, cuando mantengo presionado un elemento de la lista, también se llama al evento de clic normal?
Necesito tener dos funciones separadas para los diferentes clics.
fuente
Tengo un ListView con oyentes para un clic largo y un clic normal.
¿Por qué, cuando mantengo presionado un elemento de la lista, también se llama al evento de clic normal?
Necesito tener dos funciones separadas para los diferentes clics.
De los oyentes de eventos :
onLongClick () : devuelve un valor booleano para indicar si ha consumido el evento y no debe continuar. Es decir, devuelva verdadero para indicar que ha manejado el evento y que debería detenerse aquí; devuelva falso si no lo ha manejado y / o el evento debe continuar a cualquier otro oyente al hacer clic.
¿Regresa true
de su onLongClick()
y sigue recibiendo el evento de clic normal?
Editado para agregar : para un ListView, puede estar usando OnItemLongClickListener
. El onItemLongClick()
no utiliza un valor de retorno booleano similares para indicar si se consume el evento.
myListView.setOnItemLongClickListener(this);
opción, deberá anular la funciónpublic boolean onItemLongClick(...)
. Aquí simplemente necesita loreturn true
que indica que LongClick se activó y cancelará el disparador con el clic normal. Si devuelve falso, también activará el clic normal.Reestableciendo la respuesta en términos más simples:
Dado:
return true
significa que el evento se consume. Se maneja Ningún otro evento de clic será notificado.return false
significa que el evento no se consume. Cualquier otro evento de clic continuará recibiendo notificaciones.Entonces, si no desea
onClick
que se active también después de unonLongClick
, entonces debe hacerloreturn true
desde elonLongClick
evento.fuente
Asegúrate de anular
OnClickListener
tuonClick
método. También asegúrese de anularOnLongClickListener
suonLongClick
método. Y asegúrese de que suonLongClick
método regresetrue
, ya que esto consumirá elonClick
.fuente
Puede implementar la
setOnLongClickListener
creación de una instancia denew View.OnClickListener()
onew View.OnLongClickListener()
, si crea un clic largo e implementa un OnclickListener normal, obtendrá estos errores de un solo clic activando el método. Debe usarnew View.OnLongClickListener()
para capturar solo clics largosfuente