1

Ich habe viele schrullige Dinge mit Firebase gesehen; Hier ist einer, und ich bin mir nicht sicher, ob mir etwas in der Dokumentation fehlt oder jemand anderes in dieses Problem geraten ist.Android Google Firebase Datenbank Objekt Wert

Ich versuche, eine Zahl als Double zu speichern, und abhängig davon, ob der Wert nur einen Wert ungleich Null nach dem Dezimalpunkt hat, wird es als Double gespeichert; Andernfalls scheint Firebase den Typ in Long zu konvertieren. Beachten Sie dieses Verhalten, wenn Sie versuchen, ähnliche Werte in das Webinterface einzugeben.

Gibt es einen Trick, um es so zu halten, oder eine Arbeit zu meinem Anwendungsfall?

Ich lese den Wert in ein String-Format, das etwas an der Wirkung von String.format('%1$f', <Value>) hat.

Bei dieser Aussage abhängig davon, ob Firebase als Double oder Long gespeichert hat, bestimmt, ob ich die Ausnahme erhalte.

Irgendwelche einfachen Korrekturen zu diesem? Ich hasse es, eine komplexe Lösung für etwas zu finden, was Google beim Speichern des Werts nicht übernehmen sollte.

Antwort

2

Sie können die Modellklasse Setter ändern zu überprüfen, ob das Objekt von Feuerbasis zurückgekehrt ist ein Double oder ein Long dann das Objekt konvertieren zu verdoppeln, wenn es sich um eine Long ist.

public class CustomClass { 
    private Double value; 

    public CustomClass() {} 

    public Double getValue() { 
     return value; 
    } 

    public void setValue(Object value) { 
     if (value instanceof Double) { 
      this.value = (Double) value; 
     } else if (value instanceof Long) { 
      this.value = Double.valueOf((Long)value); 
     } 
    } 
} 
Verwandte Themen