提问者:小点点

如何在android中向MaterialAlertDialogBuilder传递数据


我正在使用最新的材料设计库。 现在要创建一个自定义对话框,我要做以下工作

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打开对话框。 它有两个文本字段,分别为ID1ID2

现在,当打开该对话框时,我需要在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个答案

匿名用户

还可以在MaterialAlertDialogBuilder.SetView方法中传递视图

首先膨胀视图,设置数据,然后将膨胀后的视图传递给MaterialAlertDialogBuilder.setView方法。

示例:

val dialogView = layoutInflater.inflate(R.layout.dialog_edit_form, null)
dialogView.findViewById<EditText>(R.id.id1)?.text = data?.val1
dialogView.findViewById<EditText>(R.id.id2)?.text = data?.val2

MaterialAlertDialogBuilder(context)
    .setView(dialogView)
    ...
    .show()