У меня есть действие, которое содержит 2 группы представлений, которые НЕ МОГУТ находиться в одной группе LAYOUT, но принадлежат к одной группе LOGIC , что означает, что они должны отображаться или скрываться и связывать событие щелчка вв то же время.Дело в том, что мне действительно ужасно писать что-то вроде этого:
fun hide() {
view1.visibility = View.GONE
view2.visibility = View.GONE
view3.visibility = View.GONE
// ...
view9.visibility = View.GONE
}
fun show() {
view1.visibility = View.VISIBLE
view2.visibility = View.VISIBLE
view3.visibility = View.VISIBLE
// ...
view9.visibility = View.VISIBLE
view1.setOnClickListener{ run() }
view2.setOnClickListener{ run() }
view3.setOnClickListener{ run() }
// ...
view9.setOnClickListener{ run() }
}
Я прочитал пост, в котором описывается kotlin навык , чтобы упростить этот беспорядок, каким-то образом сгруппировав эти представления, а затем простообрабатывать группы, но, к сожалению, я больше не могу найти этот пост ..
Помощь будет оценена!
========= Обновление 2019-07-31 =========
Я нашел решение, но забыл обновить этот вопрос, «группировка», которую я искал, на самом деле не специфическая особенность Kotlin, а просто использование vararg, и мы можем использовать расширение Kotlin (которое является УДИВИТЕЛЬНЫМ), чтобы упростить немного больше:
// assume we have a base activity or fragment, then put below functions in there
fun View.show() {
visibility = View.VISIBLE
}
fun show(vararg views: View) {
views.forEach { it.show() }
}
fun View.hide() {
visibility = View.GONE
}
fun hide(vararg views: View) {
views.forEach { it.hide() }
}
// then in any activity or fragment
show(v1, v2, v3, v4)
v9.hide()