要在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()
,然后我可以将它恢复为上一个侦听器,但我相信必须有一个更清晰的方法来执行它。
答案 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