【问题标题】:Delete row from sqlite (context menu)从 sqlite 中删除行(上下文菜单)
【发布时间】:2017-05-09 21:19:23
【问题描述】:

我想要的是当用户点击联系人时上下文菜单出现项目“删除”所以我这样做了,但问题是我希望当他点击从 Sqlit 删除一行时(对应于我的联系人刚刚点击) Activity.class

 @Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.context_menu, menu);

}


@Override
public boolean onContextItemSelected(MenuItem item) {
    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
    int i = info.position;
    switch (item.getItemId()) {
        case R.id.delete:

            dbHandler.deleteEtudiant(i);
            Toast.makeText(this,"deleted   "+i, Toast.LENGTH_SHORT).show();
           return true;

        default:
            return super.onOptionsItemSelected(item);
    }
}

MyDBHandler.class

 public void deleteEtudiant(int i)
{
    SQLiteDatabase db = this.getWritableDatabase();
    db.delete("etudiant", "Id+ =" + i, null);
}

【问题讨论】:

    标签: android sqlite listview contextmenu


    【解决方案1】:

    您的代码的问题是您正在获取“AdapterContextMenuInfo”对象的 id 并将其发送到数据库“delete()”方法。但实际上您需要发送数据库项的 id,该值存储在 SQlite 数据库中该特定行的“ID”列中。

    请看下面给出的教程,特别检查教程的“getContact()”和“deleteContact()”方法。

    http://www.androidhive.info/2011/11/android-sqlite-database-tutorial/

    【讨论】:

    • 我要检查这个tuto! thanx 但我怎样才能获得我刚刚点击的元素的 id ?
    • 要得到id,首先你必须得到item。你必须给你的适配器一个数组。您必须从适配器获取位置并从该特定位置的数组中获取特定行。现在您可以从该行获取 id。
    • 我该怎么做?
    • 我不确定您在代码中做了什么。但我希望这些链接对您有所帮助。 stackoverflow.com/questions/2321332/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-10
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多