Какую логику выбрать для обработки одинаковых действий с текстовыми полями?
Есть 4 текстовых поля. Каждое из них в процессе потери фокуса проверяется на ряд условий. Хотелось бы путем объединения этих полей в какую-то сущность применить к ней ту или иную функцию (чтобы не повторять один и тот же код 4 раза для каждого поля).
Это может быть массив или, например, when?
массив - список
val listDataString = listOf(date1, date2, date3, date4)
listDataString.setOnFocusChangeListener { ... функция_проверки()
for(i in listDataString ).setOnFocusChangeListener { ... функция_проверки()
listDataString.all { setOnFocusChangeListener } ... функция_проверки()
условие
when (!hasFocus)
date1, date2, date3, date4 -> функция_проверки()
Ответы (1 шт):
Автор решения: Vadik
→ Ссылка
Допустим, у вас есть список из EditText:
val dates = listOf<EditText>(date1, date2, date3)
Чтобы пройтись по всем элементам списка, напишем цикл:
for(date in dates) {
date.setOnFocusChangeListener {
...
}
}
То же самое можно сделать с помощью функции forEach из стандартной библиотеки:
dates.forEach { date ->
date.setOnFocusChangeListener {
...
}
}
Про циклы можно почитать документацию на русском.