Zokran / forms

Android forms management library

Home Page:https://proandroiddev.com/a-holistic-approach-to-handling-user-input-in-android-38f51ca5592

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Bintray Maven Central

A form management library for Android

This simple library aims to add structure to the creation and management of forms on Android. From simple login forms to more complex forms that contain varying object types.

The FormField class extends Android LiveData class, so databinding might be preferred for updating and observing them.

Usage

Add the dependency

dependencies {
    // ...
    implementation "com.nwagu.forms:forms:$latestVersion"
}

See sample activity for usage

Create your form fields and add them to an instance of Form.

val form = Form()

val nameFormField = FormField<String>(required = true)
        .apply {
            addValidator { validateNotEmpty() }
            addTo(form)
        }

val genderFormField = FormField<Gender>()
        .apply {
            addValidator { validateNonNullObject() }
            addTo(form)
        }

Update form

nameEdit.doOnTextChanged { text, start, count, after ->
    nameFormField.value = text?.toString()
}

Set error reporting to begin on focus changed

nameEdit.setOnFocusChangeListener { v, hasFocus ->
    if (!hasFocus)
        formField.errorReportingActive = true
}

Form fields expose observable feedback and error fields:

observeFormField(
    formField = name,
    lifecycleOwner = this,
    onError = { err
        nameEdit.error = it
    },
    onFeedback = {
        // display helpful feedback
    },
    onRequestFocus = {
        // bring nameEdit to focus
    }
)

Tips

  1. You can define your custom validation functions. A few generic validators have been added to FormFieldValidators.
  2. You can set a default value for a non-required form field.
  3. Observe form field requestFocus parameter and, on change, scroll to bring the view to focus

About

Android forms management library

https://proandroiddev.com/a-holistic-approach-to-handling-user-input-in-android-38f51ca5592

License:MIT License


Languages

Language:Kotlin 100.0%