doOnTextChanged – метод который отслеживает то, что мы вводим в поле Text Fields.
Если нам что-то надо выполнить исходя из той информации, которую вводит пользователь, то нам нужно это прописать в этом поле. Давайте сделаем так – если пользователь ввел меньше 10 символов – то мы в нашу подсказку запишем одно сообщение, если больше 10 – то другое. Кроме того мы сразу же будем выводить вводимый пользователем текст в текстовое поле, которое расположили чуть ниже
Итак к коду из этого урока мы должны добавить дополнительный код.
Во-первых что бы это реализовать – мы переходим в build.gradle (app). Это тот файл, в котором мы подключали Material Design. Здесь нам нужно импортировать 8 версию Java и установить её для Kotlin поэтому мы вставляем этот код перед defaultConfig:
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8.toString()
}
Теперь синхронизируем проект.
Далее переходим в класс нашего Activity. Нам нужно обратится к Text Input Edit Text, который находится внутри Text Input Layout. Мы это можем сделать напрямую по id Text Input Edit Text. Но есть ещё и второй способ. Мы просто обращаемся к Text Input Layout и вызываем атрибут editText, а затем вызываем наш метод, который будет реагировать на то, что вводит пользователь:
binding?.sectionEnterCity?.editText?.doOnTextChanged { text, start, before, count ->
when {
count>10 -> binding?.sectionEnterCity?.error = getString(R.string.maxError)
count<10 -> binding?.sectionEnterCity?.helperText = getString(R.string.minError)
}
binding?.result?.text = text
}
У этого метода есть два очень интересных атрибута.
count – количество символов, которые ввел пользователь
text – та информация, которую вел пользователь
start и before – отвечают за начало и конец ввода информации.
Итак, что же мы сделали. Мы указали, что если количество введенных знаков меньше 10 – то мы выводим одно сообщение и записываем его как текст-подсказку. А если пользователь ввел больше 10 символов, то мы выводим ошибку с соответствующим текстом. Кроме того мы в текстовое поле сразу же записываем введенный текст. То есть мы получаем эффект моментального отображения введенной информации, как это используется в liveData. Только в Text Fields это доступно из коробки
ДОМАШНЕЕ ЗАДАНИЕ
Добавьте к полю ввода информации – функционал вывода ошибки, а также моментальной записи вводимого текста в текстовое поле. Результат в формате видео пришлите на Whats App – +79612777611