2016-12-19 106 views
1

我見過很多有關Firebase的古怪事物;這裏是一個,不知道我是否在文檔中丟失了某些東西,或者其他人遇到了這個問題。Android Google Firebase數據庫對象值

我想將一個數字保存爲一個Double,並且取決於該值是否只有一個非小數點後的值,它將存儲爲Double;否則,Firebase似乎會將類型轉換爲Long。當嘗試在Web界面中鍵入相似的值時,請注意此行爲。

是否有一些技巧保持這種方式,或對我的使用情況的工作?

我正在讀值爲一個字符串格式,其中有一些影響String.format('%1$f', <Value>)

來到此聲明時,取決於Firebase是以Double還是Long來保存是否會收到異常。

任何簡單的修復?我討厭拿出一個複雜的解決方案來解決Google在保存價值時不應該假設的東西。

回答

2

您可以修改模型類的setter,以檢查從firebase返回的對象是Double還是Long,然後將對象轉換爲Double,如果它是Long

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); 
     } 
    } 
}