Как создать групповой обработчик динамически созданным кнопкам?
Динамически создал кнопки и добавил их в LinearLayout
fun but_gen (line:String, dec:String, contactframe:LinearLayout, tag:String) {
val contacts = "Vasya|Fedya|Masha".split("|")
for (contact in contacts) {
val button = Button(this).apply {
text = contact
}
contactframe.addView(button)
}
}
Как создать для них групповой слушатель setOnClickListener с идентификацией по text? И будет ли он рабочеспособен если создан раньше кнопок?
Ответы (1 шт):
Автор решения: woesss
→ Ссылка
Групповой слушатель может быть только у групповых контейнеров типа ListView
, RadioGroup
и т.п.
В вашем случае можно сделать просто один экземпляр на всех и повесить на каждую кнопку в том же цикле. Что-то вроде:
val buttonClickListener by lazy {
View.OnClickListener {
when ((it as Button).text) {
"Vasya" -> {}
"Fedya" -> {}
"Masha" -> {}
else -> {}
}
}
}
fun but_gen (line:String, dec:String, contactframe:LinearLayout, tag:String) {
val contacts = "Vasya|Fedya|Masha".split("|")
for (contact in contacts) {
val button = Button(this).apply {
text = contact
setOnClickListener(buttonClickListener)
}
contactframe.addView(button)
}
}