Android:CustomArrayAdapter showContextMenu onClick

Android:CustomArrayAdapter showContextMenu onClick,android,onclick,Android,Onclick,在我的Android应用程序中,我有一个自定义的ArrayAdapter,用于管理实现onCLickListener的列表中的行 在onClick方法中,我想显示上下文菜单 public class MyAdapter extends ArrayAdapter<MyClass> implements OnClickListener {

在我的Android应用程序中,我有一个自定义的ArrayAdapter,用于管理实现onCLickListener的列表中的行

在onClick方法中,我想显示上下文菜单

     public class MyAdapter extends ArrayAdapter<MyClass> implements
                                                                OnClickListener  {

    public void onClick(View v) {

            v.showContextMenu();
    } 
}
在我的主列表活动类中,我重写了启动不同活动的onLongListItemClick方法

当我点击列表中的一行时,上下文菜单正确显示,但一秒钟后,onLongListItemClick也被执行。如何阻止这种情况发生


谢谢

在您的评论之后,我想我有了一个解决方案。不要在上下文菜单中使用行onClick,在适配器中为复选框设置一个click侦听器,并从此处显示上下文菜单。这样就避免了onLongListItemClick

要使复选框和行都可单击,请将其添加到XML中的复选框定义中:

android:focusable="false"
android:focusableInTouchMode="false"
编辑

这应该可以做到:

checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) { 
        if(isChecked){
           View v = buttonView.getParent();  // get the parent row view containing the checkbox
           v.showContextMenu();     // show the context menu
        }
   } 
} 

你不能把它们倒过来吗?正常情况下使用长时间单击上下文菜单,并定期单击以启动新活动。在这种情况下,我需要长时间单击以打开编辑屏幕,用户可以在其中修改其原始详细信息并保存。我在列表中的每个元素旁边都有一个复选框。因此,当用户点击复选框时,我想打开上下文菜单,提供我不理解的“删除”和“编辑选项”,为什么这不能成为上下文菜单的一部分?我是说菜单上的选择。。。或者仅仅是因为你想消除必须选择菜单项进行编辑的额外点击?确切地说,我可以删除长点击,只允许在选择上下文菜单选项后进行编辑。但是我想在长时间单击时允许它,在上下文菜单中,单击侦听器方法是什么样子的?