我有一个带有侦听器的 ListView,用于长时间单击和常规单击。
为什么,当我长时间按下一个列表项时,常规的 click 事件也会被调用?
我需要有两个不同的点击功能。
来自 事件侦听器:
OnLongClick () -这将返回一个布尔值,以指示您是否已经使用了该事件,并且该事件不应该再进行下去。也就是说,返回 true 表示您已经处理了事件,它应该在这里停止; 如果您没有处理它,返回 false,并且/或者事件应该继续到任何其他单击侦听器。
你返回 true从你的 onLongClick()和仍然得到正常的点击事件?
true
onLongClick()
编辑后添加 : 对于 ListView,可以使用 OnItemLongClickListener。那里的 onItemLongClick()使用一个类似的布尔返回值来指示它是否使用了事件。
OnItemLongClickListener
onItemLongClick()
确保您正在为 onClick方法重写 OnClickListener。还要确保为 onLongClick方法重写了 OnLongClickListener。并确保您的 onLongClick方法返回 true,因为这将消耗 onClick。
onClick
OnClickListener
onLongClick
OnLongClickListener
用更简单的语言重述答案:
给出:
@Override public boolean onLongClick(View view) { return true; // or false }
return true
return false
因此,如果您不希望 onClick也在 onLongClick事件之后被触发,那么您应该从 onLongClick事件触发 return true。
您可以实现 setOnLongClickListener创建 new View.OnClickListener()或 new View.OnLongClickListener()的实例,如果您创建一个 Long click 并实现一个普通的 OnclickListener,您将得到单击激活该方法的错误。 您应该使用 new View.OnLongClickListener()只捕捉长时间的单击
setOnLongClickListener
new View.OnClickListener()
new View.OnLongClickListener()