Во фрагменте есть 5 полей TextInputEditText. Первый - строка, а остальные 4 - двойные, которые пользователь должен ввести. Чтобы убедиться, что значения действительны, каждое поле проверяется на пустоту, а последние четыре (с двойными) проверяются, если значение является двойным.
В следующем фрагменте кода я обрезал последние 2 декларации val & fun, поскольку они точно такие же, как и последние 2 oes, за исключением имен TextInPutLayout (и соответствующего val).
Итак, мне было интересно, возможно ли сделать pu sh короче в любым способом
private val enterTextFoodName = view.findViewById<TextInputLayout>(R.id.enter_food_name)
private val enterTextKcal = view.findViewById<TextInputLayout>(R.id.enter_kcal)
private val enterTextCarbs = view.findViewById<TextInputLayout>(R.id.enter_carbs)
[...]
private fun validateValues(): Boolean {
return (!validateFoodName()
|| !validateKcal()
|| !validateCarbs()
[...])
}
private fun validateFoodName(): Boolean {
return when {
enterTextFoodName.editText?.text.toString().trim().isEmpty() -> {
enterTextFoodName.error = getString(R.string.cant_be_empty)
false
}
else -> {
enterTextFoodName.error = null
true
}
}
}
private fun validateKcal(): Boolean {
return when {
enterTextKcal.editText?.text.toString().trim().isEmpty() -> {
enterTextKcal.error = getString(R.string.cant_be_empty)
false
}
enterTextKcal.editText?.text.toString().trim().toDoubleOrNull() == null -> {
enterTextKcal.error = getString(R.string.invalid_value)
false
}
else -> {
enterTextKcal.error = null
true
}
}
}
private fun validateCarbs(): Boolean {
return when {
enterTextCarbs.editText?.text.toString().trim().isEmpty() -> {
enterTextCarbs.error = getString(R.string.cant_be_empty)
false
}
enterTextCarbs.editText?.text.toString().trim().toDoubleOrNull() == null -> {
enterTextCarbs.error = getString(R.string.invalid_value)
false
}
else -> {
enterTextCarbs.error = null
true
}
}
}
[...]