我在使用最新的材料设计库。现在,为了创建一个自定义对话框,我正在执行以下操作
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
发布于 2020-06-22 07:22:22
你必须这样做
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}")
为了避免类型不匹配,可以使用可编辑类的工厂内部类。
Editable.Factory.getInstance().newEditable("your_text_value")
有关类型不匹配的更多详细信息,请参见此处。https://stackoverflow.com/a/37374301/13074527
https://stackoverflow.com/questions/62516496
复制