Ich versuche DataSnapshot-Wert in Objekt zu konvertieren. Es funktioniert gut, ich glaube, dass Bean-Konstruktor (mit Argumenten) für die Konvertierung verwendet. Ich habe einige Codezeilen hinzugefügt, um einige Operationen auszuführen, aber Codezeilen, die ich hinzugefügt habe, werden nie ausgeführt. Probe-Bean-Klasse:Firebase Echtzeitdatenbank DataSnapshot-Wert zu Objektkonvertierung
@IgnoreExtraProperties
public class DatabaseRecord {
private String firstName;
private String lastName;
private String fullName;
private DatabaseRecord() {
}
public DatabaseRecord(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
// following code not executing
this.fullName = firstName + lastName;
}
public String getFirstName() { return firstName; }
public String getLastName() { return lastName; }
public String getFullName() { return fullName; }
}
Firebase Online-Datenbank Fluss:
Datenabruf Ausführungscode:
DatabaseReference databaseReference = database.getReference("/user/user1");
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
DatabaseRecord record = dataSnapshot.getValue(DatabaseRecord.class);
Log.d(TAG, record.getFirstName()+":"+record.getLastName()+":"+record.getFullName());
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Ausgang:
Satish: Pandey: null
Google Dokumentation zeigt parametrisierten Konstruktor zum Festlegen von Eigenschaften, wenn das der Fall ist, warum nicht mein Code ausgeführt wird?
Wie kann ich meinen Code anhängen, nachdem die Google-Konvertierung im selben Bean-Objekt abgeschlossen ist?
Ich habe private Zugriffsmodifizierer an Eigenschaften und Standardkonstruktor angefügt und habe keine Setter-Methoden in meiner Bean-Klasse, aber Firebase füllt Werte für firstName und lastName. –
Wenn kein Setter vorhanden ist, versucht Firebase, ein Feld zu finden, das der JSON-Eigenschaft entspricht, und legt den Wert direkt dort fest. –