Android Form Validators

KotlinAndroidバリデーションフォームリアルタイムUI

Android Form Validators

概要

Android Form ValidatorsはAndroidアプリケーション専用のリアルタイムフォームバリデーションライブラリです。Material Designに準拠したエラー表示とシームレスに統合され、ユーザーフレンドリーなフォーム入力体験を提供します。EditTextを拡張し、組み込みのバリデーターと簡単なカスタマイズオプションを提供します。

特徴

  • リアルタイムバリデーション: 入力中の即座なフィードバック
  • 組み込みバリデーター: メール、電話番号、パスワード強度など
  • Material Design統合: エラー表示の自動スタイリング
  • カスタムバリデーター: 簡単に独自のルールを追加
  • 多言語対応: 各種言語のエラーメッセージ
  • 軽量: 最小限の依存関係

使用例

基本的な使用方法

<!-- レイアウトXML -->
<com.andreabaccega.widget.FormEditText
    android:id="@+id/emailEditText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="textEmailAddress"
    app:testType="email"
    app:emptyErrorString="メールアドレスを入力してください"
    app:testErrorString="有効なメールアドレスを入力してください" />

Kotlinでのバリデーション

class RegistrationActivity : AppCompatActivity() {
    private lateinit var emailField: FormEditText
    private lateinit var passwordField: FormEditText
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_registration)
        
        emailField = findViewById(R.id.emailEditText)
        passwordField = findViewById(R.id.passwordEditText)
        
        // カスタムバリデーターの追加
        passwordField.addValidator(CustomPasswordValidator())
        
        // フォーム送信時のバリデーション
        submitButton.setOnClickListener {
            if (validateForm()) {
                // フォーム送信処理
                submitRegistration()
            }
        }
    }
    
    private fun validateForm(): Boolean {
        return emailField.testValidity() && passwordField.testValidity()
    }
}

// カスタムバリデーターの実装
class CustomPasswordValidator : Validator {
    override fun isValid(text: String): Boolean {
        return text.length >= 8 && 
               text.any { it.isUpperCase() } && 
               text.any { it.isDigit() }
    }
    
    override fun getErrorMessage(): String {
        return "パスワードは8文字以上で、大文字と数字を含む必要があります"
    }
}

複数フィールドの連携

class FormValidator(private val context: Context) {
    
    fun setupPasswordConfirmation(
        passwordField: FormEditText,
        confirmField: FormEditText
    ) {
        confirmField.addValidator(object : Validator {
            override fun isValid(text: String): Boolean {
                return text == passwordField.text.toString()
            }
            
            override fun getErrorMessage(): String {
                return context.getString(R.string.password_mismatch)
            }
        })
        
        // パスワード変更時に確認フィールドも再検証
        passwordField.doAfterTextChanged {
            if (confirmField.text.isNotEmpty()) {
                confirmField.testValidity()
            }
        }
    }
}

比較・代替手段

類似ライブラリとの比較

  • Konform: より汎用的だが、UI統合は手動
  • Android Saripaar: 強力だが、学習曲線が高い
  • RxValidator: リアクティブプログラミング向け

Android Form Validatorsを選ぶべき場合

  • シンプルなフォームバリデーションが必要
  • Material Designとの統合を重視
  • 学習曲線の低さを優先
  • リアルタイムフィードバックが必要

学習リソース

まとめ

Android Form ValidatorsはAndroidアプリケーションのフォームバリデーションを簡単にする優れたライブラリです。Material Designとの深い統合、リアルタイムバリデーション、豊富な組み込みバリデーターにより、開発者は最小限のコードで高品質なユーザー体験を提供できます。