:heavy_check_mark: A text and input validation library in Kotlin for Android
The article on how this library was created is now published. You can read it on this link here. →.
Changes exist in the releases tab.
Add this in app's build.gradle
file:
def ev_version = "1.0.4"
implementation "com.wajahatkarim:easyvalidation-core:$ev_version"
// Shows Toasts by default for every validation error
implementation "com.wajahatkarim:easyvalidation-toast:$ev_version"
Full documentation is available at Gitbook.
String
, EditText
, TextView
, AutoCompleteTextView
, TextInputLayout
, and Spinner
. - Details
For example, you can validate any email String
like this:
var myEmailStr = "[email protected]"
var isValid = myEmailStr.validEmail() // isValid will be true or false
// Or you can also validate with an error callback method
myEmailStr.validEmail() {
// This method will be called when myEmailStr is not a valid email.
Toast.makeText(contex, it, Toast.LENGTH_SHORT).show()
}
These extension methods are also available for String
, EditText
, TextView
, AutoCompleteTextView
, TextInputLayout
, and Spinner
.
var myEditText = findViewById<EditText>(R.id.myEditText)
var isValid = myEditText.nonEmpty() // Checks if edit text is empty or not
// Or with error callback method like this
myEditText.nonEmpty() {
// This method will be called when myEditText is empty.
myEditText.error = it
}
There are around 30+ built-in rules in the core module library. You can check all these in Rules page. EasyValidation also supports multiple validation checks at same time using Validator class like this:
// This example will check that whether user entered password has
// atleast one number, one spcial character, and one upper case.
var txtPassword = findViewById<EditText>(R.id.txtPassword)
txtPassword.validator()
.nonEmpty()
.atleastOneNumber()
.atleastOneSpecialCharacters()
.atleastOneUpperCase()
.addErrorCallback {
txtPassword.error = it
// it will contain the right message.
// For example, if edit text is empty,
// then 'it' will show "Can't be Empty" message
}
.check()
For more advanced usage, checkout the full documentation at GitBook page.
This project needs you! If you would like to support this project's further development, the creator of this project or the continuous maintenance of this project, feel free to donate. Your donation is highly appreciated (and I love food, coffee and beer). Thank you!
PayPal
Of course, you can also choose what you want to donate, all donations are awesome!
Wajahat Karim
Copyright 2018 Wajahat Karim
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.