2010-08-31 158 views
0

我有一個表,我試圖動態刪除行。每一行都有一個刪除按鈕,打開一個確認對話框。當確認結果爲肯定時,我想刪除此表格行。Android對話框:確認刪除錶行

我得到了這個工作,相當潦草,想知道是否有一個更簡單的方法來實現我的目標。爲了澄清代碼示例中的事情,我的表需要動態創建,因此我給刪除按鈕一個id id + 2000的id。我還銷燬並重新創建每個onPrepareDialog()中的對話框。有沒有更簡單的方法來做到這一點,特別是在每次打開對話框時都不要銷燬和重新創建對話框?非常感謝你!

從我的主Activity類的某些代碼:

private OnClickListener deleteRowListener = new OnClickListener() { 

       public void onClick(View v) { 
        Bundle args = new Bundle(); 
          args.putInt(DELETE_ID_KEY, v.getId()); 
        showDialog(DIALOG_DELETE,args); 
       } 
     }; 



     @Override 
     protected void onPrepareDialog(int id, Dialog dialog, Bundle args) { 

      switch (id) { 
       case DIALOG_DELETE : { 
        removeDialog(id); 
        dialog = createDeleteDialog(args); 
       } 
      } 
     } 

     @Override 
     protected Dialog onCreateDialog(int id, Bundle args) { 
      switch (id) { 
       case DIALOG_DELETE : { 
        return createDeleteDialog(args); 
       } 
      } 
      return null; 
     } 

private Dialog createDeleteDialog(Bundle args) { 
     final int toDeleteId = args.getInt(DELETE_ID_KEY) - 2000; //FSP!! 
     return new AlertDialog.Builder(this) 
     .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 
      TableRow row = rowsMap.get(toDeleteId); 
       myTable.removeView(row); 
      } 
     }) 
     .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 
       dialog.cancel(); 
      } 
     }) 
     .create(); 
    } 

回答

0

this可能會有所幫助(注意:是利用所不具備的1.5 API的 - 你可以做一個非常簡單的解決方法,如果您需要蛋糕兼容性,雖然)

+0

謝謝!這工作,但我的印象是一個ListView不能嵌套在另一個視圖。我在此活動的ScrollView中有其他控件。 – hobgillin 2010-09-01 14:50:54