简体   繁体   English

无法通过Fragment内的上下文菜单从自定义ListView删除数据库行-Android

[英]Can't delete the Row of DataBase from Custom ListView via Context Menu inside of Fragment - Android

I've added data into my SQLite database, and it shows inside listView. 我已经将数据添加到我的SQLite数据库中,并且它显示在listView内部。 But I want to delete it with Context menu. 但是我想使用上下文菜单将其删除。 Context menu is showing, but data is not deleted. 显示上下文菜单,但不会删除数据。

Here is sample of my code: 这是我的代码示例:

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

@Override
public boolean onContextItemSelected(MenuItem item) {

    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
    mDataBase = dbHelper.getWritableDatabase();

    switch(item.getItemId()) {
        case R.id.delete:

            mDataBase.delete("orderTable", "_id" + " =? ", new String[] {String.valueOf(info.id)});

            dbAdaper.setArrayMyData(selectAll());
            dbAdaper.notifyDataSetChanged();
            mDataBase.close();

    }
    return super.onContextItemSelected(item);
}

I found out that info.id has 0 value. 我发现info.id的值为0。

 dbAdaper = new DBBasketAdapter(getActivity(), selectAll());
    listView.setAdapter(dbAdaper);
    registerForContextMenu(listView);

The code converts the ID into a string. 该代码将ID转换为字符串。

For integers, using SQL parameters is not necessary; 对于整数,不需要使用SQL参数。 just use the value directly: 只需直接使用该值:

mDataBase.delete("orderTable", "_id = " + info.id, null);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM