【发布时间】:2011-07-22 15:13:21
【问题描述】:
我有一个 ListView,其中包含长按和常规单击的侦听器。
为什么,当我长按一个列表项时,也会调用常规点击事件?
我需要为不同的点击设置两个单独的函数。
【问题讨论】:
标签: android events listview onlongclicklistener
我有一个 ListView,其中包含长按和常规单击的侦听器。
为什么,当我长按一个列表项时,也会调用常规点击事件?
我需要为不同的点击设置两个单独的函数。
【问题讨论】:
标签: android events listview onlongclicklistener
onLongClick() - 这将返回一个布尔值来指示您是否已经消费了该事件并且不应该进一步携带它。也就是说,返回 true 表示您已经处理了该事件,它应该在这里停止;如果您还没有处理它,则返回 false 和/或事件应该继续到任何其他点击监听器。
您是否从您的 onLongClick() 返回 true 并且仍然获得正常的点击事件?
编辑添加:对于 ListView,您可能正在使用 OnItemLongClickListener。那里的onItemLongClick() 使用类似的布尔返回值来指示它是否消费了该事件。
【讨论】:
myListView.setOnItemLongClickListener(this); 选项,您必须覆盖函数public boolean onItemLongClick(...)。在这里,您只需要return true,这表明LongClick 已激活,并将取消常规点击的触发。如果您返回 false,那么它也会触发常规点击。
用更简单的方式重述答案:
给定:
@Override
public boolean onLongClick(View view) {
return true; // or false
}
return true 表示事件被消费。它被处理。不会通知其他点击事件。return false 表示该事件未被消费。任何其他点击事件都将继续收到通知。因此,如果您不希望在onLongClick 之后也触发onClick,那么您应该在onLongClick 事件中触发return true。
【讨论】:
确保为您的 onClick 方法覆盖 OnClickListener。还要确保为 onLongClick 方法覆盖 OnLongClickListener。并确保您的onLongClick 方法返回true,因为这将消耗onClick。
【讨论】:
你可以实现setOnLongClickListener创建new View.OnClickListener()或new View.OnLongClickListener()的实例,如果你创建一个长按并实现一个普通的OnclickListener你会得到单击激活方法的这个错误。
你应该使用new View.OnLongClickListener() 来捕捉长点击
【讨论】: