Несколько дней назад я работал над проектом, в котором мне пришлось реализовать проверку формы в TextInputLayout
и ввод текста EditText
с использованием привязки данных. К сожалению, для этого недостаточно документации.
Наконец, я добился того, чего хотел, с помощью некоторых исследований и экспериментов. Это то, чего я хотел достичь:
Итак, я знаю, что есть много разработчиков, которые хотят таких же действий и удобного поведения в формах.
Давайте начнем.
Что Мы Собираемся Использовать?
- Котлин
- Привязка данных
- Библиотека материалов
Я собираюсь разбить весь проект на этапы, чтобы вам было легко понять.
Настройте начальный проект и включите привязку данных из build.gradle(:app)
, добавив эту строку под тегом android{}:
dataBinding{ enabled true }
Чтобы использовать TextInputLayout
и ввод текста EditText
, вам необходимо включить поддержку материалов для Android, добавив эту зависимость в build.gradle(:app)
:
implementation 'com.google.android.material:material:1.2.1'
Давайте сделаем макет нашей формы. Я упрощаю это, потому что моя цель – определить основную функциональную часть этой функции, а не разрабатывать макет.
Дорожная карта для того, чтобы стать успешным разработчиком Android
Я сделал этот простой макет:
Вот activity_main.xml
:
Наш макет готов. Давайте теперь займемся кодированием.
Если вы посмотрите на GIF финального приложения (ранее в статье), вы увидите, как ошибки отображаются и скрываются соответственно по мере выполнения условий.
Это потому, что я связал каждое текстовое поле с помощью Text Watcher
, который непрерывно вызывается, когда пользователь вводит что-то в поле.
Здесь я создал класс внутри MainActivity.kt, который наследуется от TextWatcher
:
Не беспокойтесь о view
, который передается в конструкторе класса. Я определю это позже.
Вот основная часть. В каждом текстовом поле есть некоторые условия, которые должны быть выполнены перед отправкой формы. Итак, код для каждого условия текстового поля выглядит следующим образом:
Теперь пришло время связать каждое текстовое поле с классом text Watcher
, который мы создали ранее:
Но как бы TextFieldValidation
знаете, какое текстовое поле привязать? Прокрутите вверх и посмотрите на комментарий, который я упомянул внутри метода Проверка текстового поля
:
// checking ids of each text field and applying functions accordingly.
Обратите внимание, что я передаю представление внутри конструктора Проверки текстового поля, класса, который отвечает за разделение каждого текстового поля и применение каждого из описанных выше методов следующим образом:
Ваш окончательный MainActivity.kt
будет выглядеть следующим образом:
Вы можете скачать полный исходный код для этого проекта ниже:
Скачать Код
Я надеюсь, вы узнали что-то новое. Следите за обновлениями для получения новых статей, подобных этой. Счастливого кодирования!
Оригинал: “https://dev.to/mustufa786/textinputlayout-form-validation-using-data-binding-in-android-8gf”