【问题标题】:How to delete row in Sqlite with ContextMenu?如何使用 ContextMenu 删除 Sqlite 中的行?
【发布时间】:2017-11-26 10:01:21
【问题描述】:

我想删除 Sqlite 数据库中的行。在 Listview 上长按时打开弹出窗口。(使用 ContextMenu 打开弹出窗口)。弹出窗口包括两个选项:“删除”、“更新”。当按下“删除”时,我想删除该行。

@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    menu.setHeaderTitle("Select Action");
    menu.add(0, v.getId(), 0, "Delete");
    menu.add(0, v.getId(), 0, "Update");
}

@Override
public boolean onContextItemSelected(MenuItem item) {
    ListView lst=(ListView) findViewById(R.id.ListViewVeriler);

    if(item.getTitle()=="Delete"){function1(item.getItemId());}
    else if(item.getTitle()=="Update"){function2(item.getItemId());}
    else {return false;}
    return true;
}

public void function1(int id){
    ListView lst=(ListView) findViewById(R.id.ListViewVeriler);
    VeriTabani vt=new VeriTabani(MainActivity.this); 
   //VeriTabani is my database class
    int idd=(int)lst.getSelectedItemId();
    vt.VeriSil(idd);
  //VeriSil is delete method in VeriTabanı class
    Toast.makeText(this, "Deleted Succesfully", Toast.LENGTH_SHORT).show();
}
public void function2(int id){
    Toast.makeText(this, "Update Person", Toast.LENGTH_SHORT).show();
   // I will open UpdateAction here
}


public void VeriSil(int id){

    SQLiteDatabase db = this.getWritableDatabase();

    try {
                   db.delete(TABLO_KISILER, ROW_ID_ + " = ?",
                new String[] { String.valueOf(id) });
    }
    catch (Exception e){
    }
    db.close();
}

【问题讨论】:

    标签: java android sqlite listview android-listfragment


    【解决方案1】:

    在您的 ContentProvider

    中使用此方法
    public static void deleteRow(int id)
    {
    db.execSQL("DELETE FROM "+YOUR_TABLE_NAME+" WHERE id= ?",new Object[]{id});
    }
    

    在你的活动中调用方法

    mContentProvider.deleteRow(id)
    

    额外信息

    public void function1(int id){
        ListView lst=(ListView) findViewById(R.id.ListViewVeriler);
        VeriTabani vt=new VeriTabani(MainActivity.this); 
       //VeriTabani is my database class
        int idd=(int)lst.getSelectedItemId();
        mContentProvider.deleteRow(idd);
      //VeriSil is delete method in VeriTabanı class
        Toast.makeText(this, "Deleted Succesfully", Toast.LENGTH_SHORT).show();
    }
    

    全部完成

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-14
      • 1970-01-01
      • 2020-11-21
      • 1970-01-01
      • 2017-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多