我有一个表,我试图动态删除行。每行都有一个删除按钮,用于打开确认对话框。当确认给出肯定结果时,我想删除此表格行。
我得到了这个工作,相当懒散,并想知道是否有更简单的方法来实现我的目标。为了澄清代码示例中的内容,我的表需要动态创建,所以我给删除按钮一个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();
}