将ListView项的id传递给ActionMode.Callback对象

joe*_*t45 3 android contextual-action-bar

所以我现在的问题是,现在我长时间点击ListView中的一个项目,它会调出一个上下文操作栏.传递给onItemLongClick的id是我想在mActionModeCallback的ActionItemClicked()方法中使用的变量.这似乎是一个相当常见的过程,因为如果用户正在编辑项目列表,您将希望在用户单击"编辑"或"删除"操作时以某种方式访问​​数据库中该行的ID.

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) {}
};
Run Code Online (Sandbox Code Playgroud)

joe*_*t45 8

要做到这一点,正确的方法是调用mActionMode.setTag("1")onItemCheckedStateChanged,然后从onActionItemClicked函数调用mode.getTag();