[ERLEDIGT] Namen und Adressvalidierung

  • 4 Antworten
  • Letztes Antwortdatum
Rastaman

Rastaman

Stamm-User
148
Hallo,

Ich bräuchte etwas Hilfe bei der Validierung des Namens und der Adresse, Ich möchte:

Vorname
Nachname
Straße
Hausnummer
PLZ
Stadt

eingeben lassen und die einzelnen Eingaben mit Hilfe von Java Regex validieren lassen. nach (!) der korrekten Eingabe soll ein Button (Fertig) klickbar sein mit dem weitere Aktionen ausgelöst werden.

Bis jetzt überprüfe Ich nur die Eingabe "vorname" mit folgendem Code:

Code:
 vorname.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void afterTextChanged(Editable s) {

                weiterFertig.setEnabled(false);

                Pattern p = Pattern.compile("[a-zA-Z]{2,}");
                Matcher m = p.matcher(s);

                while (m.find()) {
                    weiterFertig.setEnabled(true);
                }

            }
        });

Allerdings Ist hier der Button bei leerem Eingabefeld auch klickbar. Da stehe Ich etwas auf dem Schlauch.

Desweiteren Frage Ich mich ob Ich für jedes EditTextFeld einen weiteren TextWatcher anlegen muss oder ob Ich einen allgemeinen bauen kann um alle Eingaben (mit unterschiedlichen Patterns) zu überprüfen.

Danke für die Hilfe
Rastaman
 
Du wirst je Prüfmuster eine Instanz eines TextWatchers erstellen müssen, nicht je Eingabefeld.
 
  • Danke
Reaktionen: Rastaman
Dann weiß Ich bescheid, Danke.
[DOUBLEPOST=1444212650,1444210578][/DOUBLEPOST]@red_baron Ich habe wohl noch einen kleinen Denkfehler. Hab jetzt einen zweiten TextWatcher erstellt welcher den Nachnamen prüft. Jetzt möchte Ich den "Fertig" Button freigeben wenn BEIDE Bedingungen erfüllt sind. Kannst du mir einen Tipp geben?
 
Code:
@Override
public void afterTextChanged(Editable editable) {
    if (editable == mEditText1.getEditableText()) {
        // ...
    } else if (editable == mEditText2.getEditableText()) {
        // ...
    }
    setEnable(... && ...);
}

wo die ... sind kommen zwei private Hilfsvariablen der Activity rein und werden beide anschließend zusammen geprüft
 
  • Danke
Reaktionen: Rastaman
Ich habe jetzt 2 Textwatcher die Namen/Straße usw und Hausnummer/PLZ validieren. So weit so gut. Um jetzt den Button freizugeben habe Ich mir für jede Eingabe eine Hilfsvariable erstellt, die am Ende alle abgefragt werden um den Button erst dann freizuschalten. Allerdings ist der Button klickbar sobald die felder der inputvalidierung passen. weiß da jemand eine Erklärung?
Im Anhang habe Ich einen meiner Textwatcher inkl der "Endabfrage".

Code:
TextWatcher inputChecker = new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence input, int start, int count, int after) {
            }

            @Override
            public void onTextChanged(CharSequence input, int start, int before, int count) {
            }

            @Override
            public void afterTextChanged(Editable input) {
                Pattern p = Pattern.compile("^[a-zA-ZäöüÄÖÜß ]{3,}$");
                Matcher m = p.matcher(input);

                /*
                 * Vorname
                 */
                if (input.hashCode() == vorname.getText().hashCode()) {
                    if (m.find()) {
                        vnameValid = true;
                    } else {
                        vnameValid = false;
                    }
                }
                /*
                 * Nachname
                 */
                if (input.hashCode() == nachname.getText().hashCode()) {
                    if (m.find()) {
                        nnameValid = true;
                    } else {
                        nnameValid = false;
                    }
                }
                /*
                 * Straße
                 */
                if (input.hashCode() == strasse.getText().hashCode()) {
                    if (m.find()) {
                        strasseValid = true;
                    } else {
                        strasseValid = false;
                    }
                }
                /*
                 * Stadt
                 */
                if (input.hashCode() == stadt.getText().hashCode()) {
                    if (m.find()) {
                        stadtValid = true;
                    } else {
                        stadtValid = false;
                    }
                }
            }
        };

        if (vnameValid && nnameValid && strasseValid && stadtValid && nummerValid && plzValid) {
            weiterFertig.setEnabled(true);
        } else {
            weiterFertig.setEnabled(false);
        }

        vorname.addTextChangedListener(inputChecker);
        nachname.addTextChangedListener(inputChecker);
        strasse.addTextChangedListener(inputChecker);
        stadt.addTextChangedListener(inputChecker);

Kann es sein, dass meine [...]Valid Variablen nicht global gespeichert werden?

LÖSUNG!: Einfach die Abfrage in eine neue Funktion setzen und selbige am Ende der Textwatcher aufrufen
 
Zuletzt bearbeitet:

Ähnliche Themen

D
Antworten
8
Aufrufe
393
jogimuc
J
N
  • no1Ltan
Antworten
5
Aufrufe
432
swa00
swa00
D
Antworten
4
Aufrufe
344
Appento
Appento
Zurück
Oben Unten