Android对话框:确认删除表格行

时间:2010-08-31 19:48:28

标签: 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();
    }

1 个答案:

答案 0 :(得分:0)

this可能会有所帮助(请注意 - 使用1.5中未提供的API - 如果您需要蛋糕兼容性,可以采用相当简单的解决方法)