2017-12-13 27 views
2

こんにちはFirebaseリアルタイムデータベースを使用して新しいAndroidプロジェクトを開始します。 私の問題は、新しいメッセージを作成するときに、created_at = ServerValue.TIMESTAMPとそれにはMap<String,String>です。私がメッセージを取得するとき、私はcreated_atlongであり、それを私のモデルのマップに入れていると私に伝えて、エラー解析を得ました。以下の私のコード:Firebaseデータベース:デフォルト値(タイムスタンプ)をフィールドに設定する方法

@IgnoreExtraProperties 
public class Message implements Serializable 
{ 
@SerializedName("message_id") 
@Expose 
private String message_id; 
@SerializedName("value") 
@Expose 
private String value; 
@SerializedName("sender") 
@Expose 
private User sender; 
@SerializedName("destination") 
@Expose 
private User destination; 
@SerializedName("chatRoom") 
@Expose 
private ChatRoom chatRoom; 
@SerializedName("created_at") 
@Expose 
private Map<String,String> created_at; 
} 

また、新しいメッセージを追加するための私のコード:

String idM = databaseReference.push().getKey();     
Message m = new Message(idM, message, sender, receiver, chatRoom, ServerValue.TIMESSTAMP); 
databaseReference.child(idM).setValue(m); 

今、私は、MySQLのようなのcreated_atするためにデフォルト値を設定したいと思います: enter image description here

任意のアイデアを?

+1

チェックこの[解答](https://stackoverflow.com/a/41339272/5308778)私はあなたが私の一日を救っ@Luckyそれを – Lucky

+0

感謝 – Rockers23

+0

感謝をしようとするつもりだ – Rockers23

答えて

1

私はLuckyヘルプで解決しました。だから、解決策は以下のとおりです。

@IgnoreExtraProperties 
public class Message implements Serializable { 
@SerializedName("message_id") 
@Expose 
private String message_id; 
@SerializedName("value") 
@Expose 
private String value; 
@SerializedName("sender") 
@Expose 
private User sender; 
@SerializedName("destination") 
@Expose 
private User destination; 
@SerializedName("chatRoom") 
@Expose 
private ChatRoom chatRoom; 
@SerializedName("created_at") 
@Expose 
private HashMap<String, Object> created_at; 

public Message() { 
} 

public Message(String message_id, String value, User sender, User destination, ChatRoom chatRoom) { 
    this.message_id = message_id; 
    this.value = value; 
    this.sender = sender; 
    this.destination = destination; 
    this.chatRoom = chatRoom; 
    this.created_at = new HashMap<>(); 
    this.created_at.put("date", ServerValue.TIMESTAMP); 
} 

public String getMessage_id() { 
    return message_id; 
} 

public void setMessage_id(String message_id) { 
    this.message_id = message_id; 
} 

public String getValue() { 
    return value; 
} 

public void setValue(String value) { 
    this.value = value; 
} 

public User getSender() { 
    return sender; 
} 

public void setSender(User sender) { 
    this.sender = sender; 
} 

public User getDestination() { 
    return destination; 
} 

public void setDestination(User destination) { 
    this.destination = destination; 
} 

public ChatRoom getChatRoom() { 
    return chatRoom; 
} 

public void setChatRoom(ChatRoom chatRoom) { 
    this.chatRoom = chatRoom; 
} 

public HashMap<String, Object> getCreated_at() { 
    if (created_at != null) { 
     return created_at; 
    } 
    //Otherwise make a new object set to ServerValue.TIMESTAMP 
    HashMap<String, Object> dateCreatedObj = new HashMap<String, Object>(); 
    dateCreatedObj.put("date", ServerValue.TIMESTAMP); 
    return dateCreatedObj; 

} 
@Exclude 
public long getDateCreatedLong() { 
    return (long)created_at.get("date"); 
} 
public void setCreated_at(HashMap<String, Object> created_at) { 
    this.created_at = created_at; 
} 
} 
関連する問題