如何将listview项ID传递给ActionMode.Callback?

时间:2014-06-30 14:51:08

标签: java android contextmenu contextual-action-bar actionmode

当我在上下文操作栏中点击删除时,我试图从数据库中删除一行。但是我无法获得长期点击的项目的ID。我尝试使用setTag()通过id,但是在长按项目时强制关闭应用程序。

这是我的代码:

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view,
                int position, long id) {
            // TODO Auto-generated method stub
            startActionMode(modeCallBack);
            mActionMode.setTag(id);
            view.setSelected(true);
            return true;
        }
    });

这是onActionItemClicked

@Override
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
        // TODO Auto-generated method stub
        switch (item.getItemId()) {
        case R.id.item_delete:
            Mydatabase.execSQL("delete from TableName where _id="
                    + mode.getTag());
            mode.finish();
            break;
        }
        return true;
    }
};

1 个答案:

答案 0 :(得分:1)

如果您有数组中的项目,并且您长时间点击传递到

的位置
    public boolean onItemLongClick(AdapterView<?> parent, View view,
            int position, long id)

应该是数组中项目的索引,假设您在其中存储了ID,您只需将该ID传递给将从数据库中删除该项目的SQL查询。