当您创建一个简单的旧Java对象,该对象旨在从Firebase序列化和反序列化时,有没有办法使用该ServerValue.TIMESTAMP
值?
例如,假设我想要一个对象,其中一个属性是最后一次编辑,并且您想要使用该ServerValue.TIMESTAMP
值.
在POJO类中,您可能具有:
private String timeLastChanged;
Run Code Online (Sandbox Code Playgroud)
要么
private Map<String, String> timeLastChanged;
Run Code Online (Sandbox Code Playgroud)
在第一个例子中String
,我遇到了设置问题timeLastChange = ServerValue.TIMESTAMP;
,因为ServerValue.TIMESTAMP
是Map.
在第二个例子中,Map<String, String>
我得到了一个"未能去抖"的错误,因为它无法正确地将数据库中存储的long反序列化为一个Map<String, String>
.这有什么工作吗?
我正在尝试修改Firebase的Android聊天示例以包含Firebase时间戳值.我可以使用时间戳发送,ServerValue.TIMESTAMP;
但是当Firebase尝试显示消息时,应用程序崩溃了.编辑:下面的完整错误输出
发送我使用的消息
private void sendMessage() {
EditText inputText = (EditText)findViewById(R.id.messageInput);
String input = inputText.getText().toString();
Map timestamp = ServerValue.TIMESTAMP;
if (!input.equals("")) {
// Create our 'model', a Chat object
Chat chat = new Chat(name, input, timestamp, userID);
// Create a new, auto-generated child of that chat location, and save our chat data there
chatRef.push().setValue(chat);
inputText.setText("");
}
}
Run Code Online (Sandbox Code Playgroud)
伪造的结构是这样的:
->Messenger
|--> room
|--> messages
|--> messageID
|--> from: "Name"
|--> text: "Message"
|--> timestamp: xxxxxxxxxxxxx
|--> userID: "id"
Run Code Online (Sandbox Code Playgroud)
和Chat.java
public …
Run Code Online (Sandbox Code Playgroud)