2011-03-25 10 views

Respuesta

215

De Event Listeners:

onLongClick() - Esto devuelve un valor booleano para indicar si se ha consumido el evento y que no debe llevarse más allá. Es decir, devuelva verdadero para indicar que ha manejado el evento y debe detenerse aquí; devuelve falso si no lo ha manejado y/o el evento debe continuar con cualquier otro oyente en clic.

¿Está devolviendo true de su onLongClick() y sigue recibiendo el evento de clic normal?

Editado para agregar: para un ListView, puede estar utilizando OnItemLongClickListener. El onItemLongClick() utiliza un valor de retorno booleano similar para indicar si consumió el evento.

+0

Para configurar 'myListView.setOnItemLongClickListener (this); 'opción, tendrá que anular la función' public boolean onItemLongClick (...) '. Aquí simplemente debe 'devolver verdadero', lo que indica que LongClick se activó y cancelará el desencadenador con el clic normal. Si devuelve falso, también activará el clic normal. – Brandon

+0

¿qué pasa con la otra situación, cuando tengo que diferenciar entre el clic largo y el clic normal para tomar medidas de acuerdo con que –

+0

@erichamion He intentado su solución para un problema similar, sin suerte. Agradecería cualquier idea o pensamiento que pudiera proporcionar, que se encuentra aquí: https://stackoverflow.com/questions/47783631/recyclerview-how-to-add-onclick-and-keep-onlongclick-working – AJW

13

Asegúrate de estar anulando OnClickListener para tu método onClick. También asegúrese de estar anulando OnLongClickListener para su método onLongClick. Y asegúrese de que su método onLongClick devuelva true, ya que esto consumirá el onClick.

+0

Añadí verdad en mi método onLongClick pero todavía tiene un problema porque mi método onClick no se dispara después de eso. Agradecería cualquier pensamiento o idea sobre cómo resolver, que se encuentra aquí: https: // stackoverflow.com/questions/47783631/recyclerview-how-to-add-onclick-and-keep-onlongclick-working – AJW

15

Repitiendo la respuesta en términos más simples:

Dado:

@Override 
public boolean onLongClick(View view) { 

    return true; // or false 
} 
  • return true significa que el evento se consume. Se maneja. No se notificará ningún otro evento de clic.
  • return false significa que el evento no se consume. Cualquier otro evento de clic continuará recibiendo notificaciones.

Así que si usted no quiere a onClick también se produce tras una onLongClick, entonces debería return true del evento onLongClick.

+1

Respuesta súper perfecta si ponemos valor verdadero, entonces solo manejamos un clic largo si ponemos falso, luego ocurren los eventos de clic y de pulsación larga En seguida –

Cuestiones relacionadas