Установите флажки для диалогового окна checkBox-list - PullRequest
2 голосов
/ 30 октября 2010

У меня есть диалог, который показывает список флажков.Я хотел бы установить разные флажки каждый раз, когда отображается диалоговое окно.Но это работает только в первый раз ... Я хочу, чтобы это работало каждый раз, когда отображается диалог!Было бы здорово, если кто-нибудь может помочь ...

Это мой код:

@Override
protected Dialog onCreateDialog(int id) {
    switch (id) {

            case CHECKBOX_LIST_DIALOG:

                final CharSequence[] weeks = new CharSequence[53];

                for (int i=0; i<=52; i++) {
                    weeks[i] = String.valueOf(i+1);
                }

                return new AlertDialog.Builder(this).setTitle(
                        R.string.txt_week_checkbox_list).setMultiChoiceItems(
                        weeks, getCheckedBoxes(),
                        new DialogInterface.OnMultiChoiceClickListener() {
                            public void onClick(DialogInterface dialog, int whichButton, boolean isChecked) {
                                checked[whichButton] = isChecked;
                            }
                        }).setPositiveButton("OK",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int whichButton) {
                                EditText editText = (EditText) findViewById(R.id.edittext_weeks);
                                editText.setText(generateString());
                            }
                        }).setNegativeButton("Cancel",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int whichButton) {
                            }
                        }).create();
}

Ответы [ 2 ]

3 голосов
/ 30 октября 2010

Управляемые диалоги, созданные с помощью onCreateDialog(), кэшируются. Вам нужно будет переопределить onPrepareDialog(), так что вы получите контроль, когда появится следующий диалог. Вам передан объект Dialog. Приведите это к AlertDialog, позвоните getListView() и используйте setItemChecked(), чтобы включить или выключить каждый флажок.

0 голосов
/ 30 октября 2010

Отлично! Это сделал, спасибо! Это было именно то, что я искал :-) Вот что я сделал, чтобы все заработало, как ты объяснил:

@Override
protected void onPrepareDialog(int id, Dialog dialog) {
    ListView lv = ((AlertDialog) dialog).getListView();
    boolean[] checked = myDialog.getCheckedBoxes();
    for (int i=0; i<checked.length; i++)
        if (checked[i])
            lv.setItemChecked(i, true);
}
...