Memberi validasi pada suatu field terkadang menjadi hal yang “malas”, bukan karena tidak mudah tapi butuh ekstra coding tambahan jadi sifatnya easy but takes time hehe. Apalagi di android, setiap field di inisiasi, varibel lalu dicek. Convalida merupakan salah satu library yang memudahkan kita memasang validasi field. Convalida is a simple, lightweight and powerful field validation library for Android.
Beberapa kelebihan convalida :
- Menggunakan anotasi atau data binding;
- Kompatibel dengan library lain seperti ButterKnife, Android Data Binding, Dagger 2, dsb;
- Dapat digunakan juga dengan Stock Android Widgets;
- Berdasarkan Material Design Error Patterns;
Instalasi
Tambahkan jitpack di root build.gradle :
allprojects { repositories { maven { url 'https://jitpack.io' } } }
tambahkan juga pada dependencies :
dependencies { implementation 'com.github.WellingtonCosta.convalida:convalida:2.0.1' annotationProcessor 'com.github.WellingtonCosta.convalida:convalida-compiler:2.0.1' }
Berikut validasi yang bisa dilakukan convalida :
- Required Fields
- E-mail Fields
- Confirm E-mail Fields
- Min/Max Fields
- Only Number Fields
- Regex Fields
- Password Fields
- Confirm Password Fields
Validasi pada convalida bisa menggunakan anotasi dan data-binding. Berikut implementasinya.
Validasi menggunakan anotasi
@RequiredValidation(errorMessage = R.string.field_required) EditText nameField; @LengthValidation(errorMessage = R.string.min_3_characters, min = 3) EditText nickNameField; @OnlyNumberValidation(errorMessage = R.string.only_numbers) EditText ageField; @EmailValidation(errorMessage = R.string.invalid_email) EditText emailField; @ConfirmEmailValidation(errorMessage = R.string.emails_not_match) EditText confirmEmailField; @PatternValidation(errorMessage = R.string.invalid_phone, pattern = PHONE_PATTERN) EditText phoneField; @PasswordValidation(min = 3, errorMessage = R.string.invalid_password) EditText passwordField; @ConfirmPasswordValidation(errorMessage = R.string.passwords_not_match) EditText confirmPasswordField;
Lalu tambahkan juga anotasi pada button yang digunakan
@ValidateOnClick Button validateButton;
Tambahkan juga fungsi yang meng-handle hasil dari validasi
@OnValidationSuccess public void onValidationSuccess() { Toast.makeText("Yay!", Toast.LENGTH_LONG).show(); } @OnValidationError public void onValidationError() { Toast.makeText("Something is wrong :(", Toast.LENGTH_LONG).show(); }
Lalu inisialiasi class yang digunakan
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sample); ActivityFieldsValidation.init(this); }
Menggunakan Data Binding
Untuk menggunakan validasi data binding, kita perlu menambahkan pada project gradle
dataBinding { enabled true }
Lalu di xml yang digunakan ditambahkan validasi dan string berupa data binding :
1 2 3 4 5 6 7 8 9 10 11 | |
Lalu di xml button juga perlu ditambahkan validation action
1 2 3 | <button></button> <button> |
sisanya sama seperti pada bagian anotasi, yaitu handle result dari validasi dan inisialisasi class yang digunakan.
Kalau dilihat caranya lebih sederhana dan lebih rapih dibandingkan jika melakukan validasi secara manual. Untuk lebih jelas bisa ke https://github.com/WellingtonCosta/convalida/