Android 如何调用id设置为view.generateView()的视图
我有一个名为addRadioButtons的方法,它可以查询我的数据库中用户的信用卡,然后在对话框中以radiobuttons的形式显示在中。我将radiobutton和dataSnapshot作为一对保存在HashMap中 现在我的问题是,当用户检查单选按钮时,我不知道如何检查它是否被检查过,因为我不知道id 添加单选按钮 openDialogAndroid 如何调用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
不能将视图标记用于某种唯一标识符吗 例如:
因此,如果需要,您可以执行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)
}