Более простой способ проверки формы

«Вы ничего не поймете, пока не узнаете больше, чем одним способом»

Несколько дней назад я работал над проектом, в котором мне нужно было реализовать проверку формы для textInputLayout и textInputEditText с использованием привязки данных. К сожалению, для этого недостаточно документации.

Наконец, я добился того, чего хотел, благодаря некоторым исследованиям и экспериментам. Вот чего я хотел добиться:

Итак, я знаю, что есть много разработчиков, которым нужны те же действия и удобное для пользователя поведение в формах. Давайте начнем.

Что мы собираемся использовать?

  1. Котлин
  2. Привязка данных
  3. Библиотека материалов

Я собираюсь разбить весь проект на этапы, чтобы вам было легче понять.

1 Настройте исходный проект и включите привязку данных из build.gradle(:app), добавив эту строку под тегом android{}:

dataBinding{
    enabled true
}

Чтобы использовать textInputLayout и textInputEditText, вам необходимо включить поддержку материалов для Android, добавив эту зависимость в build.gradle(:app):

implementation 'com.google.android.material:material:1.2.1'

Сделаем макет нашей формы. Я делаю это простым, потому что моя цель - определить основную функциональную часть этой функции, а не разрабатывать макет.



Я сделал этот простой макет:

Вот activity_main.xml:

Если вас не интересуют теги <layout>, не беспокойтесь. Об этом я рассказывал в предыдущей статье.

Наш макет готов. А теперь займемся кодированием.

2Если вы посмотрите на GIF окончательного приложения (ранее в статье), вы увидите, как ошибки отображаются и скрываются соответственно, когда условия становятся true. Это потому, что я связал каждое текстовое поле с TextWatcher, который постоянно вызывается, когда пользователь вводит что-то в поле.

Здесь я создал внутри MainActivity.kt класс, унаследованный от TextWatcher:

Не беспокойтесь о view, который передается в конструкторе класса. Я определю это позже.

3 Вот основная часть. Каждое текстовое поле имеет некоторые условия, которые должны быть true перед отправкой формы. Итак, код для каждого условия текстового поля выглядит следующим образом:

4Пришло время связать каждое текстовое поле с классом textWatcher, который мы создали ранее:

Но как TextFieldValidation узнать, какое текстовое поле нужно привязать? Прокрутите вверх и посмотрите комментарий, который я упомянул внутри метода TextFieldValidation:

// checking ids of each text field and applying functions accordingly.

Обратите внимание, что я передаю представление внутри конструктора TextFieldValidation, класса, который отвечает за разделение каждого текстового поля и применение каждого из вышеперечисленных методов следующим образом:

Ваш последний MainActivity.kt будет выглядеть так:

Запустите приложение и увидите волшебство:

Вы можете скачать полный исходный код этого проекта ниже:



Надеюсь, вы узнали что-то новое. Следите за новостями, чтобы увидеть больше подобных статей. Удачного кодирования!

Следуйте CodixLab для получения дополнительных технических знаний.

Дальнейшее чтение:

  1. Пользовательский экран ошибки вместо диалогового окна сбоя по умолчанию - Android
  2. Лучшие ярлыки Android Studio
  3. Основные навыки, необходимые для того, чтобы стать разработчиком Android
  4. Android RecyclerView с красивой анимацией