Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何调用id设置为view.generateView()的视图_Android_Kotlin_Android View_Radio Group_Programmatically - Fatal编程技术网

Android 如何调用id设置为view.generateView()的视图

Android 如何调用id设置为view.generateView()的视图,android,kotlin,android-view,radio-group,programmatically,Android,Kotlin,Android View,Radio Group,Programmatically,我有一个名为addRadioButtons的方法,它可以查询我的数据库中用户的信用卡,然后在对话框中以radiobuttons的形式显示在中。我将radiobutton和dataSnapshot作为一对保存在HashMap中 现在我的问题是,当用户检查单选按钮时,我不知道如何检查它是否被检查过,因为我不知道id 添加单选按钮 openDialog 不能将视图标记用于某种唯一标识符吗 例如: 因此,如果需要,您可以执行val btn=radio_group.findViewWithTaga。从fo

我有一个名为addRadioButtons的方法,它可以查询我的数据库中用户的信用卡,然后在对话框中以radiobuttons的形式显示在中。我将radiobutton和dataSnapshot作为一对保存在HashMap中

现在我的问题是,当用户检查单选按钮时,我不知道如何检查它是否被检查过,因为我不知道id

添加单选按钮

openDialog


不能将视图标记用于某种唯一标识符吗

例如:


因此,如果需要,您可以执行val btn=radio_group.findViewWithTaga。

从for循环中生成id,并分配给变量,并在循环中给出id,如generateId+索引。然后您可以得到具有相同逻辑的按钮。@underoid generateViewId生成一个Int-tho,因此添加索引没有意义不?我是说for循环的索引也是一个Int,我认为它是有意义的。@underoid因此,例如generateViewId生成一个Int-id为10,索引为1,所以id为11?@underoid哦,好的,我明白了,我想我明白你的意思了,我来试试
if(dataSnapshot.exists()){
    val ll = RadioGroup(context)
    for (source: DataSnapshot in dataSnapshot.children) {
        val last4 = source.child("last4").value.toString()
        val brand = source.child("brand").value.toString()

        val rdbtn = RadioButton(context)
        rdbtn.id = View.generateViewId()

        val textStr = "$brand ************$last4"
        rdbtn.text = textStr
        ll.addView(rdbtn)
        radioButtonMap.put(rdbtn, source)
   }
   radiogrp.addView(ll)
}
private fun openDialog() {
    val dialog = Dialog(this.context!!)

    dialog.setContentView(R.layout.stripe_layout)
    val lp : WindowManager.LayoutParams = WindowManager.LayoutParams().apply {
        copyFrom(dialog.window?.attributes)
        width = WindowManager.LayoutParams.MATCH_PARENT
        height = WindowManager.LayoutParams.WRAP_CONTENT
    }

    radiogrp = dialog.findViewById<View>(R.id.radio_group) as RadioGroup
    addRadioButtons()
    //HOW DO I USE THIS?!?
    //radiogrp.setOnCheckedChangeListener
val rd = RadioGroup(context)
val records = listOf(
    "a" to "some record",
    "b" to "some record",
    "c" to "some record"
)
for (record in records) {
    val btn = RadioButton(context)
    btn.tag = record.first
    btn.id = View.generateViewId()
    rd.addView(btn)
}
radio_group.addView(rd)
rd.setOnCheckedChangeListener { _, checkedId ->
    val btn = radio_group.findViewById<RadioButton>(checkedId)
    println(btn.tag)
}