0

在舊的應用程序通常我會用onCreateContextMenu()具有以下簽名的情況下操作:位置相關的動作與上下文菜單

public void onCreateContextMenu(ContextMenu menu, View v, 
           ContextMenuInfo menuInfo) 

menuInfo會爲我提供的信息爲這在我的列表項上下文菜單正在建立。然後我可以找到合適的Uri來找到適合它的操作並將它們創建爲菜單項(使用自動意圖或其他)。

現在,隨着新的API,更換爲這是使用上下文操作欄ActionMode

public boolean onCreateActionMode(ActionMode mode, Menu menu) 
public boolean onPrepareActionMode(ActionMode mode, Menu menu) 

但在這裏,我怎麼能區分物品和/或得到這個位置的信息?

對於批處理模式,這樣一個參數不存在,是有道理的,因爲您應該只提供適用於任何事情的操作。但對於單一模式,不會完全等同於舊API的,除了按鈕現在在操作欄中嗎?

參考:http://developer.android.com/guide/topics/ui/menus.html#context-menu

回答

0

即使對於「批量」的選擇,你仍然需要找出哪些項目(S)被選中來執行所需的操作。

據我所知,「什麼項目被選中」部分沒有被這些回調處理,並留給開發者;沒有用於標記項目的通用方法,並且常用模式是使用複選框。請注意,對於列表項目的「選定」狀態不應該是暫時狀態,因爲如果您單擊要標記的項目爲「已選中」,則它應該保持可視狀態,以便用戶可以瞭解哪個項目正在進行中。所以你可以欺騙普通的ListView來保持它的「選擇」狀態或使用複選框或類似的機制。在任何這些方法中,無論是一個還是多個選定項目,都有您的列表,並且您可以詢問您的列表以獲取哪些列表,並對其執行所需的操作。