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 truede 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 trueque 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 truesignifica que el evento se consume. Se maneja Ningún otro evento de clic será notificado.return falsesignifica que el evento no se consume. Cualquier otro evento de clic continuará recibiendo notificaciones.Entonces, si no desea
onClickque se active también después de unonLongClick, entonces debe hacerloreturn truedesde elonLongClickevento.fuente
Asegúrate de anular
OnClickListenertuonClickmétodo. También asegúrese de anularOnLongClickListenersuonLongClickmétodo. Y asegúrese de que suonLongClickmétodo regresetrue, ya que esto consumirá elonClick.fuente
Puede implementar la
setOnLongClickListenercreació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