如何在arraylist android中显示所有值

时间:2014-08-21 17:29:13

标签: java android arraylist

我有一个功能可以检查Array中的电子邮件是否正确。如果电子邮件有效return true并向服务器发送电子邮件。

电子邮件无效时出现问题。我将每封电子邮件都放在ArrayList中,并在AlertDialog中显示。但在AlerDialog中,只显示了一封无效的电子邮件,因为return false。 我试图移动这个回归,但一切都出错了。

我希望Arrayloop结束,当loop结束时,它应该return false并显示ArrayList(我认为这应该可以胜任),但是当我在return false之后移动loop时,AlertDialog无法正常工作

这是我的功能

boolean checkedMails(String[] mails) {      
    for (int i = 0; i < mails.length; i++) {        
        if (!isEmailValid(mails[i])) {
            wrongEmails.add(mails[i]);
            Log.d("WRONGEMAILS", wrongEmails.toString());
            return false;
        }
    }
    return true;
}

在这里我发送电子邮件或显示alerDialog

sendButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                String IRegEmail = waitingForAdd.getText().toString();

                String[] mails = getAnswers();
                try {
                    if (checkedMails(mails)) {
                        sendEmails(mails);
                    } else {

                        alertDialogThis = new AlertDialog.Builder(
                                ReferFriend.this);
                        timer = new Timer();
                        alertDialogThis.setMessage("Wrong emails are:"
                                + wrongEmails);
                        dlg = alertDialogThis.create();
                        dlg.show();
                        // dialog.dismiss();
                        timer.schedule(new TimerTask() {
                            public void run() {
                                dlg.dismiss();

                                timer.cancel();
                            }
                        }, 2000);
                        wrongEmails.clear();
                    }

                } catch (Exception e) {
                    Toast.makeText(getApplicationContext(),
                            "Please add e-mails", Toast.LENGTH_LONG).show();
                }
            }

        });

    }

2 个答案:

答案 0 :(得分:4)

仅显示1封电子邮件,因为在第一封无效电子邮件之后,该函数返回。我认为这应该有所帮助,如果整个集合有效/无效,请添加一个额外的标记来跟踪。

boolean checkedMails(String[] mails) {
        boolean isValid = true;
        for (int i = 0; i < mails.length; i++) {
            if (!isEmailValid(mails[i])) {
                wrongEmails.add(mails[i]);
                Log.d("WRONGEMAILS", wrongEmails.toString());
                isValid = false;
            }
        }
        return isValid;
    }

答案 1 :(得分:1)

你可以在循环之前设置一个布尔变量,并在检查完成后返回它。

boolean checkedMails(String[] mails) {

    boolean isGood = true;
    for (int i = 0; i < mails.length; i++) {


        if (!isEmailValid(mails[i])) {

            wrongEmails.add(mails[i]);
            Log.d("WRONGEMAILS", wrongEmails.toString());
            isGood = false;
        }


    }
    return isGood;
}