2010-08-31 102 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