在我的情况下,我有一个ListView
,其中包含两种视图,文件夹和图像。长按文件夹时,会显示ContextMenu
,其中包含2个项目“输入文件夹”和“为该图书馆添加书签”,对于图像时,带有“查看”和“删除”的ContextMenu
显示起来。
通常,我应该覆盖onContextItemSelected
中的Activity
并在切换案例中列出所有可能的菜单项ID。但对图像文件夹和操作的操作是两个完全无关的事情,对吗?将这两个(甚至更多)的东西放在一个函数中是不是很奇怪?
我想知道,有没有办法可以为每个上下文菜单设置回调处理程序而不是弄乱onContextItemSelected
?任何建议都表示赞赏。
答案 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哪个菜单已加载)。由于您只有四种不同的菜单项,所以这不会太糟糕。