Java Can';t通过Fragment-Android内部的上下文菜单从自定义ListView中删除数据库行
我已经将数据添加到我的SQLite数据库中,它显示在listView内部。 但我想用关联菜单删除它。 显示关联菜单,但未删除数据 以下是我的代码示例:Java Can';t通过Fragment-Android内部的上下文菜单从自定义ListView中删除数据库行,java,android,database,sqlite,Java,Android,Database,Sqlite,我已经将数据添加到我的SQLite数据库中,它显示在listView内部。 但我想用关联菜单删除它。 显示关联菜单,但未删除数据 以下是我的代码示例: @Override public void onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); MenuInflater
@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);
}
我发现info.id的值为0
dbAdaper = new DBBasketAdapter(getActivity(), selectAll());
listView.setAdapter(dbAdaper);
registerForContextMenu(listView);
代码将ID转换为字符串 对于整数,不需要使用SQL参数;直接使用该值即可:
mDataBase.delete("orderTable", "_id = " + info.id, null);
我讨厌在语句中直接传递值!!!但我必须同意你的意见,因为处理
String[]wherergs
毫无价值。。。