EditText setOnFocusChangeListener für alle EditTexte

8

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?

    
James Perih 01.05.2013, 01:49
quelle

4 Antworten

18

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.

%Vor%     
tyczj 01.05.2013, 01:56
quelle
8

Mein Vorschlag wäre, eine benutzerdefinierte EditText zu verwenden, um dies für Sie zu handhaben:

%Vor%

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.

    
kcoppock 01.05.2013 02:06
quelle
6

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:

%Vor%

Dann können Sie diese Methode für jede Ihrer TextView-Instanzen aufrufen:

%Vor%     
mattgmg1990 01.05.2013 01:55
quelle
3

Oder noch einfacher

%Vor%

Da onFocusChange (View v, boolean hasFocus) über den Parameter View verfügt, können Sie festlegen, welche Ansicht es aufgerufen hat

    
Ian 01.05.2013 02:13
quelle

Tags und Links