setOnLongClickListener和setOnClickListener问题

时间:2011-12-27 22:31:16

标签: android onitemclicklistener onlongclicklistener

我有一个列表视图。我想要实现的是,当我长按任何项目时,它将显示一个对话框菜单。但是我也有一个点击监听器。长时间点击后会触发它。我怎样才能取消它,或者有没有办法忽略longclick的clcik动作。

由于

3 个答案:

答案 0 :(得分:4)

Check this out

setOnLongClickListener有一种特定的方法。只需确保您setLongClickable的{​​{1}}为真!您需要将您定义的侦听器分开,以进行正常点击和长按。

除此之外,尝试发布一些代码。它将使社区更好地帮助您。

答案 1 :(得分:1)

我的猜测是,您正在对应于列表中项目的每个视图上直接设置点击侦听器,可能在getView的{​​{1}}方法中使用与此类似的代码:

ListAdapter

如果您这样做,这些视图上的itemView.setOnClickListener(new OnClickListener() { @Override public void onClick(final View v) { // DO SOMETHING } }); 会覆盖OnClickListeners级别的监听器设置(使用ListView),并且您的上下文菜单永远不会被长时间点击调用。

正确的方法是在registerForContextMenu(listView)级别设置菜单(长按)和点击监听器:

ListView
PS:我正在回答,因为我遇到了同样的问题,如果你需要一个上下文菜单,我觉得registerForContextMenu(listView); listView.setOnItemClickListener( new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> a, View v, int position, long l) { // DO SOMETHING // selected item is a.getAdapter().getItem(position); } }); 接受的答案可能不是推荐的方法。

答案 2 :(得分:0)

如果您想以正确的方式执行此操作,请阅读Context Menu。否则你可以使用弹出对话框和覆盖listview的onItemLongClickListener

,以简单但凌乱的方式完成它。