【问题标题】:How to pass listview item ID to ActionMode.Callback?如何将列表视图项 ID 传递给 ActionMode.Callback?
【发布时间】:2014-06-30 14:51:07
【问题描述】:

当我单击上下文操作栏中的删除时,我试图从数据库中删除一行。但是我无法获取长时间单击的项目的 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;
    }
};

【问题讨论】:

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


    【解决方案1】:

    如果您有一个数组中的项目,并且您长按某个位置传递到的位置

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-09
      • 2011-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多