【问题标题】:ListView contextual action bar for pre honeycomb devices with ActionBarSherlock带有 ActionBarSherlock 的预蜂窝设备的 ListView 上下文操作栏
【发布时间】:2013-08-17 18:58:45
【问题描述】:

要在 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(),我可以将其恢复为以前的侦听器,但我相信必须有一种更清洁的方法来做到这一点。

【问题讨论】:

  • @YourCommonSense 取消删除它

标签: android actionbarsherlock contextmenu contextual-action-bar


【解决方案1】:

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

你可以先检查一下有没有选中的类似

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

【讨论】:

  • 啊,对,我期待它会自动发生(因为我还在学习,使用一本没有解释此事的书),我会试一试并回来: )
  • getSelectedCount 由于某种原因不能用作我的 ListView 对象的方法。但是,这以某种方式帮助了我,我设法做到了。谢谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-22
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多