我有一个列表视图。我想要实现的是,当我长按任何项目时,它将显示一个对话框菜单。但是我也有一个点击监听器。长时间点击后会触发它。我怎样才能取消它,或者有没有办法忽略longclick的clcik动作。
由于
答案 0 :(得分:4)
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