微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – 如何在onPrepareDialog中设置setSingleChoiceItems的内容?

伙计们,在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,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,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;
}

解决办法是什么?
先谢谢你们.

解决方法

您需要使用AlertDialog类中的 getListView方法.然后在返回的对象上使用 setItemChecked方法.例:

alertDialog.getListView().setItemChecked(1,true);

原文地址:https://www.jb51.cc/android/316405.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐