如何动态检查所有空的编辑文本并在android中显示相应的消息?

时间:2018-10-18 18:39:55

标签: java android android-edittext

有时候我们有很多编辑文本输入字段,我们必须检查所有输入字段,并且需要根据输入类型显示特定的消息,这太烦人了,无法一一检查全部并显示消息。是否可以通过一种方法动态检查所有输入字段并显示消息?

1 个答案:

答案 0 :(得分:0)

是的,当有很多输入字段时,这太烦人了。一旦我必须检查25个输入字段是否为空并且需要显示特定消息,这一次我创建了一种检查所有输入字段并显示消息的方法仅使用一种方法就可以实现动态变化。我正在分享自己的方式。 在editText中,有一个选项可以为每个edittext设置标签。所以我只是在对它们进行类型转换之后才将标签设置为每个edittext.like-

 etEmail.setTag("email");
 if(emptyChecker(new EditText[]{etEmail})){
// do your task
}

然后在“提交”按钮上,我刚刚使用一系列edittext调用了我创建的方法。该方法如下-

/**
 * input field empty checker
 *
 * @param editTexts
 * @return
 */

public static boolean emptyChecker(EditText[] editTexts, Activity activity) {
    /**
     * checking input field for empty or not
     */
    int totalLength = 0;
    for (int i = 0; i < editTexts.length; i++) {
        EditText editText = editTexts[i];
        if (editText.getText().toString().trim().equals("")) {
            Toast.makeText(activity, editTexts[i].getTag().toString().toLowerCase() + " " + activity.getString(R.string.is_empty), Toast.LENGTH_SHORT).show();
            break;
        } else {
            if (editText.getTag().toString().toLowerCase().equals(activity.getString(R.string.email).toLowerCase())) {
                String email = editText.getText().toString().trim();
                String emailPattern = "[a-zA-Z0-9._-]+@[a-z]+\\.+[a-z]+";
                if (!email.matches(emailPattern)) {
                    Toast.makeText(activity, activity.getString(R.string.invalid), Toast.LENGTH_SHORT).show();
                    break;
                } else {
                    totalLength++;
                }
            } else {
                totalLength++;
            }

        }
    }
    //true means all okay
    //false means at least one is empty
    return totalLength == editTexts.length;
}

在这里我取了一个edittext数组,循环遍历该数组后,在每个edittext上检查是否为空。如果为空,则取该edittext的标签并附加**为空**并且在烤面包上显示。然后,如果edittext不为空,则我用 email 检查了标签。因此,如果它是电子邮件,则我使用正则表达式来验证电子邮件,如果有效,则我增加计数器如果不是,那么我打破循环并展示了一个敬酒。如果不是电子邮件类型,那么我就增加计数器。最后,我通过将计数器长度与edittext数组长度进行比较来返回布尔值,因为计数器是只有当edittext不为空时才增加。所以想法是如果所有编辑文本都不为空,则计数器大小将与edittext数组的长度相同。如果任何编辑文本为空或电子邮件与正则表达式不匹配,则我有通过使用为空来获取edittext和concat的标记来显示消息。这将动态显示消息。 您只需要将settag设置为edittext并将其作为数组传递给此方法,然后在返回值为true的情况下执行您的任务,并且所有其他任务都将通过此简单方法完成。