Ich habe ein Modell, das eine Liste enthält.Absturz auf Deserialisierung Liste von Firebase
class Group {
List<String> members;
// Other fields
}
Ich bin Einfügen das gesamte Modell in Firebase databaseRef.setValue(group)
verwenden. Jetzt wird es korrekt in Firebase eingefügt, aber das Problem tritt auf, wenn ich versuche, einen neuen Wert im Feld members
hinzuzufügen.
Ich verwende membersRef.push().setValue("[email protected]")
, um ein neues Feld in der Mitgliederliste auf Firebase hinzuzufügen.
Wenn Group
Objekt wurde zunächst erstellt Firebase verwendet "0", "1", etc als Schlüssel, aber wenn ich() drücken, erstellt es eine eindeutige Zeichenfolge als Schlüssel.
Ich schaffe das Java-Objekt zurück mit diesem Code:
groupReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Group group = dataSnapshot.getValue(Group.class);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Jetzt ist das Problem bei der Erstellung des Group
Klasse zurück von Firebase versucht, die members
Feld in einem List
zu konvertieren, weil sie Schlüsselstart ist aus 0 aber nach einiger Iteration gibt es einen String
Schlüssel (etwas wie "-KjTzYGRDZN99rBZfPDF"), also stürzt es ab, es in List
zu konvertieren.
My Firebase Objekt sieht wie folgt aus:
Group
|-----members
|----0: "[email protected]"
|-----KjTzYGRDZN99rBZfPDF: "[email protected]"
Ich bin verwirrt, wie kann ich dieses Problem lösen. Wie kann ich der Firebase mitteilen, dass sie einen eindeutigen Schlüssel für List anstelle von 0, 1, 2 usw. verwenden soll?