我需要你的帮助。我花了太多时间在这上面,如果我指定了id号,我只能更新数据库。
编辑数据并返回listview活动。简单吧。嗯。
@Override
public void onItemClick(AdapterView<?> listView, View view, int position, long id) {
Cursor cursor = (Cursor)listView.getItemAtPosition(position);
String title = cursor.getString(cursor.getColumnIndexOrThrow(MoviesDbAdapter.KEY_TITLE));
String barcode = cursor.getString(cursor.getColumnIndexOrThrow(MoviesDbAdapter.KEY_BARCODE));
String rowId = cursor.getString(cursor.getColumnIndexOrThrow(MoviesDbAdapter.KEY_ROWID));
Intent movieEdit = new Intent(getBaseContext(), MovieEdit.class);
Bundle bundle = new Bundle();
bundle.putString("rowId", rowId);
bundle.putString("title", title);
bundle.putString("barcode", barcode);
movieEdit.putExtras(bundle);
startActivity(movieEdit);
从列表视图活动中接收意图:
if (this.getIntent().getExtras() != null) {
Bundle bundle = this.getIntent().getExtras();
editTitle.setText(bundle.getString("title"));
editBarcode.setText(bundle.getString("barcode"));
editId.setText(bundle.getString("rowId"));
}
通过按钮激活语句:
case R.id.buttonSave:
mDb.open();
ContentValues values = new ContentValues();
values.put(MoviesDbAdapter.KEY_TITLE, title);
values.put(MoviesDbAdapter.KEY_BARCODE, barcode);
mDb.updateTitle("=?", title, barcode);
mDb.close();
MovieDbAdapter中的方法:
public boolean updateTitle(long rowId, String title, String barcode)
{
ContentValues args = new ContentValues();
args.put(KEY_TITLE, title);
args.put(KEY_BARCODE, barcode);
return mDb.update(SQLITE_TABLE, args, KEY_ROWID + "=" + rowId, null) > 0;
我知道这已经完成,但无论我尝试什么,我都无法使用新数据更新数据库。 希望你能帮助他们。
答案 0 :(得分:0)
将您的代码更改为以下
case R.id.buttonSave:
mDb.open();
mDb.updateTitle(rowId, title, barcode);
mDb.close();