0

SQLite データベースにデータを追加すると、listView 内に表示されます。しかし、コンテキストメニューで削除したいです。コンテキスト メニューは表示されますが、データは削除されません。

ここに私のコードのサンプルがあります:

@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);
4

1 に答える 1

1

コードは ID を文字列に変換します。

整数の場合、SQL パラメータを使用する必要はありません。値を直接使用するだけです:

mDataBase.delete("orderTable", "_id = " + info.id, null);
于 2013-10-31T09:41:05.580 に答える