• 0
  • Contact Me: alexbashy9001@gmail.com

Text Fields and doOnTextChanged #3

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

Leave a Reply

Your email address will not be published. Required fields are marked *