java - 如何使用 ContextMenu 删除 Sqlite 中的行?

标签 java android sqlite listview android-listfragment

我想删除 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();
}

最佳答案

在您的 ContentProvider 中使用此方法

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

在你的 Activity 中调用方法

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

全部完成

祝你好运!

关于java - 如何使用 ContextMenu 删除 Sqlite 中的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47494917/

相关文章:

java - 无法在我的网站中播放 .m4a 或 .3gpp 音频文件

java - 如何从 JAR 中的类路径读取文件?

android - 通过 Wifi Direct 传输文件

android - 录制的视频无法立即从文件位置读取?

java - 使用流从 Java 8 中的文件中读取特定列,并将它们放入二维数组中

Java继承与多态

android - Android 3.0 Honeycomb Preview AVD 模拟器中的 MapView?

ruby-on-rails - Heroku不会为Rails 3.2创建postgres数据库表(以及数据库本身)

python - 使用 python sqlite3 将行插入 sqlite 数据库的简要语法

ios - Google Analytics SDK 创建 SQLite 错误