gpt4 book ai didi

android - Java 数据模型对象中的 Firebase ServerValue.TIMESTAMP

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:47:56 27 4
gpt4 key购买 nike

我是 Firebase 的新手,到目前为止我非常喜欢它。我遇到了问题;我正在使用类似于此处教程大纲的 FirebaseListAdapter:https://github.com/firebase/AndroidChat

要使用 FirebaseListAdapter,我需要使用数据模型对象(以使自动绑定(bind)正常工作)。问题是我还想为该模型对象保留一个时间戳值,并且我想从 Firebase 服务器获取时间戳。

我目前没有工作的是一个类 DataModelObject(类似于演示示例中的 com.firebase.androidchat.Chat),其构造函数如下:

DataModelObject(String data1, String data2, Map enQTimeStamp)

然后我尝试像这样使用它:

DataModelObject dmo = new DataModelObject ("foo", "bar", ServerValue.TIMESTAMP);
myFirebaseRef.push().setValue(dmo);

当我尝试运行该代码时,这会导致 JsonMappingException。我在这里找到了一个代码 fragment :

https://www.firebase.com/blog/2015-02-11-firebase-unique-identifiers.html

但值得注意的是,在Android代码示例的第4行,这将导致编译时错误(因为他试图将ServerValue.TIMESTAMP放入一个Map中,而TIMESTAMP本身就是一个Map)

执行此操作并保持与 FirebaseListAdapter 的兼容性的正确方法是什么?

最佳答案

这听起来类似于这个问题:When making a POJO in Firebase, can you use ServerValue.TIMESTAMP?

除了默认的空构造函数之外,在创建用于存储/检索数据的 POJO 时,我通常使用类似于以下的构造函数:

Param param1;
Param param2;
HashMap<String, Object> timestampCreated;

//required empty constructor
public DataObject(){}

public DataObject(Param param1, Param param2) {
this.param1 = param1;
this.param2 = param2;
HashMap<String, Object> timestampNow = new HashMap<>();
timestampNow.put("timestamp", ServerValue.TIMESTAMP);
this.timestampCreated = timestampNow;
}

确保为用于存储时间戳的 HashMap<> 包含一个 getter:

public HashMap<String, Object> getTimestampCreated(){
return timestampCreated;
}

然后使用@Exclude 注解创建一个getter,如果需要,您可以在代码中使用它来获取时间戳的值。 @Exclude 注释将导致 Firebase 忽略此 getter 并且不查找相应的属性

@Exclude
public long getTimestampCreatedLong(){
return (long)timestampCreated.get("timestamp");
}

关于android - Java 数据模型对象中的 Firebase ServerValue.TIMESTAMP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36658833/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com