带有ActionBarSherlock的预蜂窝设备的ListView上下文操作栏

时间:2013-08-17 18:58:46

标签: android actionbarsherlock contextmenu contextual-action-bar

要在Android Honeycomb及更高版本上使用上下文操作栏,我通常会检查SDK_INT是否为11或更高版本,然后继续mListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);

现在,使用ActionBarSherlock,我试图将其移植到旧设备。现在我使用CHOICE_MODE_MULTIPLE代替CHOICE_MODE_MULTIPLE_MODAL,在OnItemLongClickListener内,我设法调用getSherlockActivity().startActionMode(myActionModeCallback);

问题是,当我第一次长按ListView中的某个项目时,上下文操作栏会正确显示。

但是,当我点击另一个ListView项目时,该项目被选中,之后它的点击监听器被触发。 (我使用那个监听器,这样当用户点击某个项目时,它会打开一个新的活动,用户可以在其中编辑该项目,因此在这种情况下,该项目会被选中并立即启动这个新活动,并破坏我的上下文行动吧)

它应该不会发生,但我想我做错了什么。 我已经考虑过将OnListItemClick侦听器设置为null,直到我调用ActionMode.finish(),然后我可以将它恢复为上一个侦听器,但我相信必须有一个更清晰的方法来执行它。

1 个答案:

答案 0 :(得分:0)

据我了解你的问题,这里有一个解决方案。

您可以先检查是否有选定的项目,如

boolean hasCheckedItems = yourListAdapter.getSelectedCount() > 0;

然后您可以检查以下条件

if (hasCheckedItems && ActionModeObject == null)
//there are some selected items, start the ActionMode 

else if (!hasCheckedItems && ActionModeObject != null)
// there no selected items, finish the ActionMode
ActionModeObject.finish();

if (ActionModeObject != null)
//Action Button Clicked