0

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

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

     public class MyAdapter extends ArrayAdapter<MyClass> implements
                                                                OnClickListener  {

    public void onClick(View v) {

            v.showContextMenu();
    } 
}

在我的主 List Activity 类中,我重写了启动不同 Activity 的 onLongListItemClick() 方法。

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

谢谢!

4

1 回答 1

0

在你的评论之后,我想我有一个解决方案。不要使用onClick上下文菜单的行,在您的适配器中为复选框设置一个单击侦听器,并从那里显示您的上下文菜单。这样你就避免了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
        }
   } 
} 
于 2012-06-15T16:01:13.360 回答