[英]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.