динамический alertdialog с переключателями

Я пытаюсь составить динамичный список объекта, таким образом, я могу добавить к нему на времени выполнения, но я понятия не имею. CharSeqence не является динамичным, и никакая подсказка, как использовать опцию адаптера, как я мог изменить свой код, чтобы быть динамичным?

private void alertDialogLoadFile() {

    AlertDialog.Builder alert = new AlertDialog.Builder(this);
    alert.setTitle("Choose:");  
    CharSequence[] items = { "moshe", "yosi", "ee" };
    alert.setSingleChoiceItems(m_items , -1, new DialogInterface.OnClickListener() {

        public void onClick(DialogInterface dialog, int item){
            /* User clicked on a radio button do some stuff */
        }
    });

    alert.setPositiveButton("Yes", new DialogInterface.OnClickListener() {

        public void onClick(DialogInterface dialog, int id) {
    }
    });

    alert.setNegativeButton("No", new DialogInterface.OnClickListener() {

        public void onClick(DialogInterface dialog, int id) {
            dialog.cancel();
        }
    });


    AlertDialog ad = alert.create();
    ad.show();

}
8
задан Janusz 9 August 2010 в 09:40
поделиться

1 ответ

[11287327-

Если вы создаете диалог в OnCreatedialog () , вы можете реализовать onPreparedialog () , чтобы изменить выбор, прежде чем он отображается на Пользователь. Например:

protected void onPrepareDialog(int id, Dialog dialog) {    
    if (id == YOUR_DIALOG_ID) {

        // Create new adapter
        ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>();
        adapter.add("new items ...");
        ...

        // Use the new adapter
        AlertDialog alert = (AlertDialog) dialog;
        alert.getListView().setAdapter(adapter);
    }
}

Вы также можете получить тот же эффект, получив адаптер из диалогового окна (и отбрасывая его в правильный тип) и добавляя или удаление элементов, как вы видите. Я, вероятно, наклонся к простому созданию нового адаптера, потому что вам не придется беспокоиться о том, чтобы отказаться от значения из getListadapter () к неправильному типу. Однако повторное использование адаптера, вероятно, немного более эффективно.

2
ответ дан 5 December 2019 в 23:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: