2

チェックボックスのリストを表示するダイアログがあります。ダイアログが表示されるたびに異なるボックスをチェックしたいと思います。しかし、それは初めてしか機能しません..ダイアログが表示されるたびに機能したいです! 誰かが助けてくれたら最高です...

これは私のコードです:

@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();
}
4

2 に答える 2

3

を介して作成された管理対象ダイアログonCreateDialog()はキャッシュされます。onPrepareDialog()ダイアログが次に表示されるときに制御できるように、をオーバーライドする必要があります。オブジェクトが渡されDialogます。これをにキャストし、AlertDialogを呼び出しgetListView()、を使用setItemChecked()して各チェックボックスのオンとオフを切り替えます。

于 2010-10-30T19:13:07.380 に答える
0

すごい!やった、ありがとう!! それはまさに私が探していたものでした:-)あなたが説明したように機能させるために私がしたことは次のとおりです。

@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);
}
于 2010-10-30T19:42:47.463 に答える