所以我现在的问题是,现在我很长时间点击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