传递ListView项的ID来ActionMode.Callback对象 [英] Passing id of ListView item to ActionMode.Callback object

查看:388
本文介绍了传递ListView项的ID来ActionMode.Callback对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以现在我的问题是,现在我长点击它会弹出一个上下文操作栏一个ListView的项目。传递到onItemLongClick ID是我想在mActionModeCallback的使用上ActionItemClicked()方法中的变量。这似乎是这将是一个相当普遍的方法,因为如果一个用户正在编辑的项目列表,你想访问该行的id在数据库不知何故,当用户点击编辑或删除操作。

  listView.setOnItemLongClickListener(新OnItemLongClickListener(){
    公共布尔onItemLongClick(适配器视图<指p,观景,INT POS,长I​​D){        //行的数据库中的ID
        长variableThatIWantToPassToCallback = ID;
        mActionMode = getActivity()startActionMode(mActionModeCallback)。
        view.setSelected(真);
        返回true;
    }
});私人ActionMode.Callback mActionModeCallback =新ActionMode.Callback(){    公共布尔onCreateActionMode(ActionMode模式,菜单菜单){}    在prepareActionMode公共布尔(ActionMode模式,菜单菜单){}    公共布尔onActionItemClicked(ActionMode模式,菜单项项){
        //我想访问点击项目的ID在这里,不item.getItemId()
    }    公共无效onDestroyActionMode(ActionMode模式){}
};


解决方案

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

So my problem right now is that right now I am long clicking an item in a ListView which brings up a contextual action bar. The id passed into onItemLongClick is the variable that I would like to use in the mActionModeCallback's on ActionItemClicked() method. This seems like it would be a fairly common procedure since if a user is editing a list of items, you would want to access the id of that row in the database somehow when the user clicked an "edit" or a "delete" action.

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) {}
};

解决方案

The proper way to do this is to call mActionMode.setTag("1") in onItemCheckedStateChanged and then from the onActionItemClicked function call mode.getTag();

这篇关于传递ListView项的ID来ActionMode.Callback对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆