2017-03-13 6 views
0

我正在使用3個TextViews和1按鈕的CursorAdapter。我想在按下按鈕時從數據庫中刪除條目。
注:存在於這個很多職位,但他們都使用現在貶值「cursor.requery」我想刪除一行中的列表視圖使用該行中的按鈕沒有cursor.requery,因爲它是貶值

@Override 
public void bindView(View view, final Context context, final Cursor cursor) { 

    TextView viewID = (TextView) view.findViewById(R.id.viewID); 
    TextView viewAmount=(TextView) view.findViewById(R.id.viewAmount); 
    TextView viewCategory=(TextView) view.findViewById(R.id.viewCategory); 
    Button buttonDelete = (Button) view.findViewById(R.id.buttonDelete); 

    final int id = cursor.getInt(cursor.getColumnIndexOrThrow("_id")); 
    String amount = cursor.getString(cursor.getColumnIndexOrThrow("amount")); 
    String category = cursor.getString(cursor.getColumnIndexOrThrow("category")); 

    viewID.setText(String.valueOf(id)); 
    viewAmount.setText(amount); 
    viewCategory.setText(category); 

    buttonDelete.setOnClickListener(new View.OnClickListener() { 
     @Override 
      public void onClick(View v) { 
       Toast.makeText(context, "Deleted item " + id, Toast.LENGTH_SHORT).show(); 
      //Do I create a DB handler here and run a dbHandler.deleteItem(id) 
      //method or do something else?  

      } 
     }); 

    } 

回答

1

相同的代碼試圖表明這一個

buttonDelete.setOnClickListener(new View.OnClickListener() { 
    @Override 
     public void onClick(View v) { 
      Toast.makeText(context, "Deleted item " + id, Toast.LENGTH_SHORT).show(); 
      String query = "DELETE * from *table_name* where _id = "+ id + ""; 
      db.execQuery(query) // db is your DatabaseHelper 
      startActivity(getIntent()); 
      finish();     
     } 
    }); 

} 
+0

所以我跑了db.deleteTransaction (ID);因爲我在我的dbHandler查詢,它確實刪除了事務。但是:(1)它沒有刷新表格,我不得不手動進入前一頁面並返回以使更改生效,(2)我認爲在CustomAdapter類中運行SQL查詢是不好的,因爲這個類運行非常頻繁。 –

+0

只是在刪除所選行後意圖執行您的活動:) –

+0

因此,我添加了一個意圖,使用listview重新激活該活動,並且它的工作原理是刪除一個項目並更改屏幕以反映新數據集。然而,它不是「令人耳目一新」,而是創造一個「新」屏幕。這意味着,當我點擊手機上的後退按鈕時,它會在發生刪除之前回到屏幕......包含刪除行。 –

相關問題