繁体   English   中英

具有ActionBarSherlock的蜂窝前设备的ListView上下文操作栏

[英]ListView contextual action bar for pre honeycomb devices with ActionBarSherlock

要在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()为止,在这里我可以将其恢复为以前的侦听器,但是我相信必须有一种更ActionMode.finish()方法。

据我了解您的问题,这是为您提供的解决方案。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM