Ich habe mehrere EditText-Felder, die ich mit setOnFocusChangeListener in der SQLiteDatabase speichern möchte. Muss ich einen onFocusChangeListener für jeden einzeln einstellen, oder gibt es einen Catch-all? (getActivity (). findViewByID, weil dies ein Fragment ist)
%Vor%Wie ... gibt es eine Möglichkeit, eine ArrayList & lt; EditText & gt; von EditText Views, weisen Sie den vorhandenen editTexts einen Zeiger (sorry, nicht sicher wie) zu und setzen Sie den onFocusChangeListener auf die gesamte arraylist? Oder sogar, durchlaufen Sie die ArrayList und setzen Sie den onFocusChangeListener auf jedes Mitglied?
Oder eine Möglichkeit, ALLE onFocusChangeListener-Ereignisse zu erkennen und alle Daten in der Datenbank zu speichern, unabhängig davon, an welchem EditText-Objekt gerade ein Fehler aufgetreten ist?
Nun, du könntest deine Aktivität OnFocusChangeListener
implementieren lassen. Auf diese Weise werden alle Ihre Änderungen auf diesem einen Weg durchgeführt, aber Sie müssen überprüfen, welche Ansicht den Fokus geändert hat, indem Sie die Ansichts-ID mit v.getId()
erhalten und entsprechend handhaben.
Mein Vorschlag wäre, eine benutzerdefinierte EditText
zu verwenden, um dies für Sie zu handhaben:
Sie könnten entscheiden, die Client- und Datenschlüssel anders zu behandeln, aber die Idee ist, dass Sie eine benutzerdefinierte Basisklasse verwenden, die automatisch damit umgehen wird.
Es gibt viele Möglichkeiten, wie Sie das einfacher machen könnten. Wie wäre es zum Beispiel, dies in eine Methode zu abstrahieren und sie für jedes TextView
aufzurufen, dem Sie das Ereignis hinzufügen möchten für:
Dann können Sie diese Methode für jede Ihrer TextView-Instanzen aufrufen:
%Vor%Tags und Links android view android-edittext