所以我現在的問題是,現在我很長時間點擊ListView中的一個項目,它會彈出一個上下文操作欄。傳入onItemLongClick的id是我想在ActionItemClicked()方法的mActionModeCallback中使用的變量。這似乎是一個相當普遍的過程,因爲如果用戶正在編輯項目列表,那麼當用戶單擊「編輯」或「刪除」操作時,您會希望以某種方式訪問數據庫中該行的標識。將ListView項目的id傳遞給ActionMode.Callback對象
listView.setOnItemLongClickListener(new OnItemLongClickListener() {
public boolean onItemLongClick(AdapterView<?> p, View view, int pos, long id) {
//The id of the row in the database
long variableThatIWantToPassToCallback = id;
mActionMode = getActivity().startActionMode(mActionModeCallback);
view.setSelected(true);
return true;
}
});
private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {
public boolean onCreateActionMode(ActionMode mode, Menu menu) {}
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {}
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
//I would like access to the id of the clicked item here, NOT item.getItemId()
}
public void onDestroyActionMode(ActionMode mode) {}
};
你不能在'ActionMode.Callback'中訪問'ListView'的適配器嗎?從那裏你可以得到檢查的項目(方便地由你存儲),或者如果你使用SDK行佈局,你可以使用對ListView的引用並使用getCheckedItemsIds。 – Luksprog