Простой способ - создать набор таких видов вручную:
val editableViews: Set<View> = setOf(v1, v2, v3)
и использовать его:
editableViews.forEach { it.enabled = isEditMode }
Если у вас сложный макет, вы можете добавить динамическую инициализацию:
private fun getAllViews(
view: View,
set: MutableSet<View>,
filter: (view: View) -> Boolean = {true}
){
val viewGroup = view as? ViewGroup
if (viewGroup != null) {
for (i: Int in 0 until viewGroup.childCount) {
val child = viewGroup.getChildAt(i)
getAllViews(child, set)
}
} else {
if (filter()) {
set.add(view)
}
}
}
инициализируйте его в onViewCreated
или в onCreate
val views = mutableSetOf<View>()
getAllViews(root, views) {
it is Spinner || it is EditText || it is Checkbox
}
editableViews = views
Он собирает все необходимые представления, поэтому вы можете сделать их включенными или отключенными.Но вы должны отметить, что этот вариант не так гибок, и вы должны предпочесть только первый.(В случае каких-либо исключений вы должны исключить некоторые)