我的活动包含40或50 EditText
....(例如注册表格)
当我点击提交按钮时,我必须保持所有EditText
为空或空(验证)
如果我逐个检查edittext
if(ed_text.isEmpty() || ed_text.length() == 0 || ed_text.equals("") ||
ed_text == null)
{
//EditText is empty
}
else
{
//EditText is not empty
}
我的活动就像所有字段一样只有条件而且很难维护所有EditText
名称检查并放置条件。
我如何能够以简单的方式进行管理而无需声明条件....是否有解决此问题的方法,因为这很耗时且难以维护数据......或者是否有任何库来检查这种情况?
以及如何维护Toast
之类的
if firstname is empty : please enter firstname
if lastname is empty : please enter lastname
答案 0 :(得分:3)
我建议你创建一个需要验证的EditTexts数组列表:
List<EditText> validationList = new ArrayList();
void init() {
et = (...)
validationList.add(et);
}
boolean validate() {
for(EditText e : validationList) {
if(!isValid(et))
//display your message here
return false;
}
return true;
//Of course if you want to display message for all EditTexts validation faults just wait with returning "false".
}
void boolean isValid(EditText et) {
return et.isEmpty() || et.length() == 0 || et.equals("");
}
通过这种方式,可以更轻松地维护不同的验证(不为空,字符串长于等等) - 您只需创建不同的列表。
考虑使用Kotlin
使用Kotlin可以更轻松地完成这项任务。您可以为EditText创建扩展方法以对其进行验证。您还可以使用委托&#34; getters&#34;创建自定义EditTexts。和#34; setters&#34;对于文本属性(例如Vetoable delegate)。
答案 1 :(得分:2)
使用错误消息创建公共函数hasText
并且没有错误消息
公共消息
public static boolean hasText(EditText editText) {
return hasText(editText,"Required")
}
客户留言
public static boolean hasText(EditText editText,String error_message) {
String text = editText.getText().toString().trim();
editText.setError(null);
// length 0 means there is no text
if (text.length() == 0) {
editText.setError(error_message);
return false;
}
return true;
}
验证数据
及时验证
private boolean Validate() {
boolean check = true;
if (!hasText(editFirstName)) check = false;
if (!hasText(editLastName)) check = false;
if (!hasText(editExtra,"Message temp")) check = false;
return check;
}
OR
逐一验证
private boolean Validate() {
if (!hasText(editFirstName)) return false;
if (!hasText(editLastName)) return false;
if (!hasText(editExtra)) return false;
return true;
}
如何使用
if(Validate())
{
//do your work
}
答案 2 :(得分:0)
答案 3 :(得分:0)
此扩展名有助于验证EditText的值是否具有有效的电子邮件,最小和最大长度等。查找更多详细信息EditText Extensions
import android.text.Editable
import android.text.TextWatcher
import android.widget.EditText
/**
* Created by Chathura Wijesinghe on 2019-06-12.
* cdanasiri@gmail.com
*/
/**
* This extension supports EditText validation such as emails, maximum and minimum length
* */
fun EditText.afterTextChanged(afterTextChanged: (String) -> Unit) {
this.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(s: Editable?) {
afterTextChanged.invoke(s.toString().trim())
}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {}
})
}
/**
* You can validate the EditText like
*
* et_email.validate("Valid email address required"){ s -> s.isValidEmail() }
*
* et_email.validate("Minimum length is 6"){ s-> s.length>=6 }
*
* */
fun EditText.validate(message: String, validator: (String) -> Boolean) : Boolean{
this.afterTextChanged {
this.error = if (validator(it)) null else message
}
this.error = if (validator(this.getString())) null else message
return validator(this.getString())
}
/**
* @return String value of the EditTextView
* */
fun EditText.getString(): String{
return this.text.toString()
}
/**
* @return Trimmed String value of the EditTextView
* */
fun EditText.getStringTrim(): String{
return this.getString().trim()
}
您可以验证任何这样的条件
var isValid = et_email.validate("Minimum length is 4 "){ s-> s.length>=4 && s.length<=10 }