伙计们,在 onCreateDialog 中我有这个:
case DIALOG_REVIEW: {
if (bundle.containsKey("POSITION")) {
final int position = bundle.getInt("POSITION");
ArrayList<String> alterNumbers = numbers.get(position);
final String[] phoneNums = new String[alterNumbers.size()];
for (int i = 0; i < alterNumbers.size(); i++) {
phoneNums[i] = alterNumbers.get(i);
}
AlertDialog.Builder dialog = new AlertDialog.Builder(this);
dialog.setTitle(names.get(position) + "'s number(s)");
dialog.setSingleChoiceItems(phoneNums, 0,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// get selected item and close the dialog
String selectedNumber = phoneNums[which];
updateUserSelectedNumber(position , selectedNumber);
}
});
return dialog.create();
}
这是有效的并且很棒。
但要注意线路
dialog.setSingleChoiceItems(phoneNums, 0,
new DialogInterface.OnClickListener() {
每次弹出对话框时,phoneNums 都会发生变化。
我已经重写了 onPrepareDialog 方法,但我不知道如何为其分配新值。
并且那里也没有 setSingleChoiceItems 。
这是我的 onPrepareDialog 方法
case DIALOG_REVIEW: {
final int position = bundle.getInt("POSITION");
ArrayList<String> alterNumbers = numbers.get(position);
final String[] phoneNums = new String[alterNumbers.size()];
for (int i = 0; i < alterNumbers.size(); i++) {
phoneNums[i] = alterNumbers.get(i);
}
AlertDialog alertDialog = (AlertDialog) dialog;
alertDialog.setTitle(names.get(position) + "'s number(s)");
???
break;
}
解决办法是什么?
提前谢谢你们。
你需要使用获取列表视图 http://developer.android.com/reference/android/app/AlertDialog.html#getListView()AlertDialog 类中的方法。然后使用设置选中项 http://developer.android.com/reference/android/widget/AbsListView.html#setItemChecked(int,%20boolean)返回对象上的方法。例子:
alertDialog.getListView().setItemChecked(1, true);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)