Я использую новейшую библиотеку материального дизайна. Теперь, чтобы создать настраиваемый диалог, я делаю это
holder.id_edit_srt_bit.setOnClickListener {
println(my_data[position])
var data = my_data[position]
MaterialAlertDialogBuilder(context)
.setView(R.layout.dialog_edit_form)
.setPositiveButton("OK") { dialog, which ->
println("---------> $dialog -> $which")
}
.setNegativeButton("NO") { dialog, which ->
println("---------> $dialog -> $which")
}
.show()
}
При нажатии открывается диалоговое окно с моим настраиваемым макетом dialog_edit_form
. у него есть два текстовых поля с id1
и id2
.
Теперь при открытии этого диалога мне нужно установить значение, которое находится в переменной data
Как это сделать ?
Я пробовал это, но не работает
var dialog = Dialog(context)
dialog.findViewById<EditText>(R.id.id1)?.text = data?.val1 as Editable
dialog.findViewById<EditText>(R.id.id2)?.text = data?.val2 as Editable
Пожалуйста, ответьте только в материальном дизайне. Мне не нужны старые способы сделать это. Поэтому я использую MaterialAlertDialogBuilder
1 ответ
Ты должен сделать вот так
var dialogView = MaterialAlertDialogBuilder(context)
.setView(R.layout.dialog_edit_form)
...
.show()
dialogView.findViewById<EditText>(R.id.id1)?.text =
Editable.Factory.getInstance().newEditable("${data?.val1}")
dialogView.findViewById<EditText>(R.id.id2)?.text =
Editable.Factory.getInstance().newEditable("${data?.val2}")
Чтобы избежать несоответствия типов, вы можете использовать внутренний класс Factory класса Editable.
Editable.Factory.getInstance().newEditable("your_text_value")
Более подробную информацию о несовпадении типов можно найти здесь. https://stackoverflow.com/a/37374301/13074527
Похожие вопросы
Связанные вопросы
Новые вопросы
android
Android — это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфонов, планшетов, автомобилей, телевизоров, одежды, очков, IoT). Для тем, связанных с Android, используйте теги, специфичные для Android, такие как android-intent, android-activity, android-adapter и т. д. Для вопросов, отличных от разработки или программирования, но связанных с Android framework, используйте эту ссылку: https://android .stackexchange.com.