В приложении для Android я хочу отобразить пользовательский вид списка в AlertDialog.
Как я могу это сделать?
android
android-alertdialog
Брэд Ларсон
источник
источник
Ответы:
Используемый ниже код для отображения пользовательского списка в AlertDialog
источник
Согласно документации , существует три вида списков, которые можно использовать с
AlertDialog
:Я приведу пример каждого ниже.
Традиционный список с одним выбором
Способ сделать традиционный список с одним выбором - использовать
setItems
.Версия на Java
Нет необходимости в кнопке OK, потому что, как только пользователь нажимает на элемент управления списком, он возвращается в
OnClickListener
.Котлин версия
Список радиокнопок
Преимущество списка переключателей по сравнению с традиционным списком состоит в том, что пользователь может видеть текущую настройку. Способ сделать список переключателей состоит в использовании
setSingleChoiceItems
.Версия на Java
Я жестко запрограммировал выбранный элемент здесь, но вы могли отслеживать его с помощью переменной члена класса в реальном проекте.
Котлин версия
Список флажков
Способ сделать список флажков заключается в использовании
setMultiChoiceItems
.Версия на Java
Здесь я жестко закодировал, какие пункты в списке уже были проверены. Более вероятно, что вы захотите отслеживать их в
ArrayList<Integer>
. Смотрите пример документации для более подробной информации. Вы также можете установить отмеченные элементы,null
если вы хотите, чтобы все начиналось без проверки .Котлин версия
Ноты
context
приведенном выше коде не используйте,getApplicationContext()
или вы получитеIllegalStateException
(см. Здесь, почему). Вместо этого получите ссылку на контекст действия, например, сthis
.setAdapter
илиsetCursor
или передачи вCursor
илиListAdapter
вsetSingleChoiceItems
илиsetMultiChoiceItems
.Чтобы протестировать все приведенные выше примеры, у меня был простой проект с одной кнопкой, который показывал диалоговое окно при нажатии:
Связанный
источник
RecyclerView
этого макет.BUTTON_POSITIVE
) или позиция элемента нажата».Builder.setAdapter(ListAdapter, DialogInterface.OnClickListener)
:which
в прослушивателеonClick
будет равно позиции нажатого элемента.Builder.setOnItemSelectedListener
не будет иметь никакого эффекта.Вы можете использовать собственный диалог.
Пользовательский макет диалога.
list.xml
В вашей деятельности
Редактировать:
Использование alerttdialog
custom.xml
Щелчок
источник
источник
ListAdapter
сsetSingleChoiceItems
(очень похоже на вызов выше)Используйте "
import android.app.AlertDialog;
" импорт, а затем вы пишетеисточник
show()
делает оба.Calling this method is functionally identical to: AlertDialog dialog = builder.create(); dialog.show();
это непосредственно изshow()
документации методаЭто слишком просто
источник
Как новичок, я бы предложил вам пройти через http://www.mkyong.com/android/android-custom-dialog-example/
Я буду в общих чертах, что это в основном делает
Dialog
dialog.show()
метод.источник
В Котлине:
источник
Это способ отображения диалогового окна с пользовательским элементом списка, который можно настроить в соответствии с вашими требованиями.
ШАГ - 1 Создайте макет DialogBox, то есть: -
R.layout.assignment_dialog_list_view
ШАГ - 2 Создайте собственный макет элемента списка в соответствии с вашей бизнес-логикой
R.layout.item_assignment_dialog_list_layout
ШАГ - 3 Создайте класс модели данных по вашему выбору
ШАГ - 4 Создание собственного адаптера
}
ШАГ - 5 Создайте эту функцию и предоставьте ArrayList вышеупомянутой модели данных в этом методе
Шаг - 6 Создание фона круглого угла для диалогового окна
@ Вытяжка / rectangle_round_corner_assignment_alert
источник
Разве не проще сделать метод, вызываемый после создания модуля EditText в AlertDialog, для общего использования?
источник
источник