我如何自定义上下文菜单项单击回调?

时间:2011-08-05 01:51:20

标签: android contextmenu

在我的情况下,我有一个ListView,其中包含两种视图,文件夹和图像。长按文件夹时,会显示ContextMenu,其中包含2个项目“输入文件夹”和“为该图书馆添加书签”,对于图像时,带有“查看”和“删除”的ContextMenu显示起来。

通常,我应该覆盖onContextItemSelected中的Activity并在切换案例中列出所有可能的菜单项ID。但对图像文件夹和操作的操作是两个完全无关的事情,对吗?将这两个(甚至更多)的东西放在一个函数中是不是很奇怪?

我想知道,有没有办法可以为每个上下文菜单设置回调处理程序而不是弄乱onContextItemSelected?任何建议都表示赞赏。

2 个答案:

答案 0 :(得分:3)

我认为使用ContextMenu既不灵活也不方便。

是的,在一种方法中处理10个或更多不同的操作很奇怪,因此最好使用AlertDialogs而不是ContextMenu。看这个: http://developer.android.com/guide/topics/ui/dialogs.html#AddingAList

看起来像上下文菜单,对吗?您可以在元素的OnLongClickListener或AdapterView.OnItemLongClickListener中显示对话框(如果是ListView),您可以在DialogInterface.OnClickListener中处理操作。

另请查看我提出的问题,或许它对您也有帮助:How to create dialog that looks exactly like ContextMenu?

答案 1 :(得分:0)

onCreateContextMenu() - 方法中,您可以通过检查传递的View参数来确定是否点击了文件夹或图片。

之后,您可以为文件夹创建一个单独的菜单,为图像创建一个菜单(每个菜单都有一个不同的XML文件)并对其进行充气。

onContextItemSelected() - 方法中,您只需检查所有可能的条目(没有madder哪个菜单已加载)。由于您只有四种不同的菜单项,所以这不会太糟糕。