0

在较旧的应用程序中,我通常会使用onCreateContextMenu()以下签名进行上下文操作:

public void onCreateContextMenu(ContextMenu menu, View v,
                                ContextMenuInfo menuInfo)

menuInfo将为我提供正在构建上下文菜单的列表中的哪个项目的信息。然后我可以有权Uri找到适合它的操作并将它们创建为菜单项(使用自动意图或其他方式)。

现在,使用更新的 API,替换它的是上下文操作栏,使用ActionMode

public boolean onCreateActionMode(ActionMode mode, Menu menu) 
public boolean onPrepareActionMode(ActionMode mode, Menu menu)

但是在这里,我如何区分项目和/或获取此位置信息?

对于批处理模式,不存在这样的参数是有意义的,因为您应该只提供适用于任何事物的操作。但是对于单模式,除了按钮现在在操作栏中之外,这不完全等同于旧的 API 吗?

参考:http: //developer.android.com/guide/topics/ui/menus.html#context-menu

4

1 回答 1

0

即使对于“批量”选择,您仍然需要找出选择了哪些项目来执行所需的操作。

据我所知,这些回调没有解决“选择了哪些项目”部分,而是留给了开发人员;没有通用的方法来标记项目,一个常见的模式是使用复选框。请注意,列表项的“已选择”状态不应是暂时状态,因为如果您单击要标记的项目为“已选择”,则应在视觉上保持选中状态,以便用户可以了解哪个项目正在研究中。因此,您可以欺骗普通的 ListView 以保持其“选定”状态或使用复选框或类似机制。在这些方法中的任何一种中,无论是一个还是多个选定的项目,您都有您的列表,您可以查询您的列表以获取哪些被选择并对其执行所需的操作。

于 2012-12-31T05:19:13.897 回答