如何检查多个edittext或textview为空还是null?

时间:2018-03-28 10:47:43

标签: android android-edittext textview

我的活动包含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

4 个答案:

答案 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)

你无能为力。您需要创建一个函数来验证所有EditText,然后在提交数据之前调用此函数。

另一种选择是使用像herehere

这样的验证器库

答案 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 }