0

我需要你的帮助。我在这方面花了太多时间,如果我指定了 ID 号,我只能更新数据库。

  1. 单击列表视图项并将数据发送到新活动以进行编辑
  2. 编辑数据并返回列表视图活动。简单对。嗯。

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

从 listview 活动接收意图:

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;

我知道这已经完成了,但无论我尝试什么,我都无法用新数据更新数据库。希望你们能帮到大家。

4

1 回答 1

0

将您的代码更改为以下

case R.id.buttonSave:

    mDb.open();  
    mDb.updateTitle(rowId, title, barcode);  
    mDb.close(); 
于 2013-05-15T11:42:28.307 回答