Какую логику выбрать для обработки одинаковых действий с текстовыми полями?

Есть 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 {
        ...
    }
}

Про циклы можно почитать документацию на русском.

→ Ссылка