我有一个程序,它显示通过内容提供者从数据库中提取的记录列表。
我有一个内容菜单,当长按列表视图上的任何项目时,会出现一个内容菜单,它提供了删除项目的选项。
我想要做的是改用对话框 - 这样用户可以选择在删除之前用描述标记项目。
这是我的内容菜单的代码:
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
showDialog(DIALOG_SAB_PRIORITY_ID);
menu.add(0, DELETE_ID, 0, "Returned Item - Remove");
}
以及选择项目时的代码:
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case DELETE_ID:
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
.getMenuInfo();
Uri uri = Uri.parse(BorrowMeContentProvider.CONTENT_URI + "/"
+ info.id);
getContentResolver().delete(uri, null, null);
fillData();
return true;
}
return super.onContextItemSelected(item);
}
我应该提一下,我将更改该项目,使其不会被删除,只是标记为已退回。我的对话框如下:
protected Dialog onCreateDialog(int id) {
AlertDialog dialog;
switch (id) {
case DIALOG_SAB_PRIORITY_ID:
final CharSequence[] items = { "Good Condition", "Bad Condition" };
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Returned Item Condition:")
.setSingleChoiceItems(items, 0,
new DialogInterface.OnClickListener() {
// This is the listener that checks to see what
// radio button is clicked
public void onClick(DialogInterface dialog,
int item) {
// Toast.makeText(getApplicationContext(),
// Integer.toString(item),
// Toast.LENGTH_SHORT).show();
if (item == 0) {
// If item returned in good condition
goodBadSwitch = false;
} else if (item == 1) {
// If item is returned in bad condition
goodBadSwitch = true;
}
}
})
.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
// This is the listener for the button to
// dismiss the dialog box
@Override
public void onClick(DialogInterface dialog,
int which) {
dialog.dismiss();
}
});
dialog = builder.create();
break;
default:
dialog = null;
}
return dialog;
}
到目前为止,这段代码所做的只是在对话框之后调用菜单。我只想让对话框代替菜单。
谢谢