Я могу сгенерировать временную метку и сохранить ее в базе данных Firebase Realtime. Но не могу понять, как мне ее извлечь и показать в виде текста. Я знаю, что оно извлекается как длинное значение и сохраняется как карта. Я также создал следующее в своем классе модели, но не знаю, что делать дальше.
private Map<String, String> timestamp;
Код для отправки сообщений
private void sendMessage(String sender, final String receiver, String message) {
if (sender.equals(receiver)){
Toast.makeText(MessageActivity.this,"Message Can't be sent",Toast.LENGTH_SHORT).show();
}
else {
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("sender", sender);
hashMap.put("receiver", receiver);
hashMap.put("message", message);
hashMap.put("timestamp", ServerValue.TIMESTAMP);
hashMap.put("isseen", false);
DatabaseReference Chatreference = FirebaseDatabase.getInstance().getReference("Chats");
Key = Chatreference.child(ChatKey).push().getKey();
Chatreference.child(ChatKey).child(Key).setValue(hashMap);
}
Код для чтения сообщений
private void readMessages(String myid, String userid, String imageurl) {
mChat = new ArrayList<>();
Chatreference = FirebaseDatabase.getInstance().getReference("Chats").child(ChatKey);
Chatreference.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
Chat chat = dataSnapshot.getValue(Chat.class);
if (chat.getReceiver().equals(myid) && chat.getSender().equals(userid) ||
chat.getReceiver().equals(userid) && chat.getSender().equals(myid)) {
chat.setMessageId(dataSnapshot.getKey());
mChat.add(chat);
Log.d(TAG, "Child_Event_Listener_Called");
Log.d(TAG, "msg " + chat.getMessage());
}
messageAdapter = new MessageAdapter(MessageActivity.this, mChat, imageurl);
recyclerView.setAdapter(messageAdapter);
messageAdapter.notifyDataSetChanged();
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
Chat chat = dataSnapshot.getValue(Chat.class);
chat.setMessageId(dataSnapshot.getKey());
mChat.remove(chat);
messageAdapter.notifyDataSetChanged();
}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
Обновление класса модели
public class Chat {
private String sender;
private String receiver;
private String message;
private boolean isseen;
private Map<String, String> timestamp;
String MessageId;
public Chat(String sender, String receiver, String message, boolean isseen, Map<String, String> timestamp) {
this.sender = sender;
this.receiver = receiver;
this.message = message;
this.isseen = isseen;
this.timestamp = timestamp;
}
public Chat() {
}
public String getSender() {
return sender;
}
public void setSender(String sender) {
this.sender = sender;
}
public String getReceiver() {
return receiver;
}
public void setReceiver(String receiver) {
this.receiver = receiver;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getMessageId() {
return MessageId;
}
public void setMessageId(String messageId) {
MessageId = messageId;
}
public boolean isIsseen() {
return isseen;
}
public void setIsseen(boolean isseen) {
this.isseen = isseen;
}
public Map<String, String> getTimestamp() {
return timestamp;
}
public void setTimestamp(Map<String, String> timestamp) {
this.timestamp = timestamp;
}
@Override
public boolean equals(@Nullable Object obj) {
if(obj instanceof Chat){
Chat chat=(Chat) obj;
return this.MessageId.equals(chat.getMessageId());}
else
return false;
}
}