Как обновить массив элементов в списке AlertDialog, созданном с помощью AlertDialog.builder после создания

Я создал диалоговое окно, которое показывает список элементов с несколькими вариантами, которые можно проверить, используя AlertDialog.builder.

Я установил начальный набор имен элементов и их проверенное состояние следующим образом:

builder.setMultiChoiceItems( saveTargets.names, saveTargets.checked, new DialogInterface.OnMultiChoiceClickListener() {

В моем диалоговом окне я добавил кнопку, которая создает новый элемент, который должен отображаться и быть доступным для выбора в списке множественного выбора.

Как я могу попросить диалоговое окно обновить список, чтобы показать новый элемент?

Я добавил его к своим переменным «saveTargets», но мне нужно установить новые данные в представление списка в диалоговом окне предупреждения.

Я попытался использовать курсор для настройки множественного выбора. Я не могу использовать это сейчас по другим причинам.

Я просмотрел получение ListView и адаптера из диалогового окна предупреждения, но не вижу никаких вызовов для обновления массива имен и проверенного статуса.


person Andrew Mackenzie    schedule 04.04.2011    source источник


Ответы (1)


Мне тоже нужно было сделать что-то подобное. После просмотра google, stackoverflow и документации кажется, что это невозможно сделать без создания собственного адаптера для обработки списка (см.: Как настроить элементы списка в Android AlertDialog). Поскольку мне это нужно было только для одного диалога, в итоге я сделал то, что в документации сказано, не делать: я сделал диалоговое окно предупреждения в своем собственном методе и не сделал его частью «onCreateDialog» в своей деятельности (мне пришлось сделать это для серии диалогов для другого класса в моем приложении). Таким образом, диалоговое окно воссоздается с нуля каждый раз, когда оно вызывается, поэтому список каждый раз обновляется. Это было самое простое решение, которое я мог найти лично. Может быть, не так чисто, но его легче добавить, и он работает так, как должен.

person Christian Smith    schedule 09.06.2011