Eu tenho um ListView com ouvintes por um longo clique e um clique regular.
Por que, quando pressiono um item da lista, o evento de clique regular também é chamado?
Eu preciso ter duas funções separadas para os diferentes cliques.
fonte
Eu tenho um ListView com ouvintes por um longo clique e um clique regular.
Por que, quando pressiono um item da lista, o evento de clique regular também é chamado?
Eu preciso ter duas funções separadas para os diferentes cliques.
Dos ouvintes do evento :
onLongClick () - retorna um booleano para indicar se você consumiu o evento e não deve ser levado adiante. Ou seja, retorne true para indicar que você manipulou o evento e ele deve parar aqui; retorne false se você não o tiver manipulado e / ou o evento continuar com outros ouvintes ao clicar.
Você está voltando true
do seu onLongClick()
evento e continua recebendo o clique normal?
Editado para adicionar : para um ListView, você pode estar usando OnItemLongClickListener
. O onItemLongClick()
lá usa um valor de retorno booleano semelhante para indicar se consumiu o evento.
myListView.setOnItemLongClickListener(this);
opção, você precisará Substituir a funçãopublic boolean onItemLongClick(...)
. Aqui você precisa simplesmente oreturn true
que indica que o LongClick foi ativado e cancelará o gatilho com um clique regular. Se você retornar falso, também acionará o clique regular.Reafirmando a resposta em termos mais simples:
Dado:
return true
significa que o evento é consumido. É tratado. Nenhum outro evento de clique será notificado.return false
significa que o evento não é consumido. Quaisquer outros eventos de clique continuarão recebendo notificações.Portanto, se você não quiser
onClick
também ser acionado após umonLongClick
, deverá fazê- lo areturn true
partir doonLongClick
evento.fonte
Verifique se você está substituindo o
OnClickListener
seuonClick
método. Verifique também se você está substituindo oOnLongClickListener
seuonLongClick
método. E certifique-se de que seuonLongClick
método retornetrue
, pois isso consumirá oonClick
.fonte
Você pode implementar a
setOnLongClickListener
criação de uma instância denew View.OnClickListener()
ounew View.OnLongClickListener()
, se você criar um clique longo e implementar um OnclickListener normal, obterá esses erros de clique único ativando o método. Você deve usarnew View.OnLongClickListener()
para capturar apenas cliques longosfonte