2016-08-09 23 views
3

dataSnapshotの参照と各特定のオブジェクトのキーをカスタム 'Message'オブジェクトに渡したいと考えています。カスタムオブジェクトの参照とキーを取得するFirebase Android

私はMessage.class内で 'String key'キーを使用しようとしましたが、nullに戻ると思われます。私は適切にカスタムオブジェクトにdataSnapshot.getKey()文字列を渡す方法を、

public class Message { 

    private String key; 
    private String sender_id; 
    private String sender_username; 
    private String receiver_username; 
    private String receiver_id; 
    private String chat_id; 
    private String message; 
    private Firebase ref; 
    private double createdAt; 
    private boolean read; 

    public Message() { 
     // empty default constructor, necessary for Firebase to be able to deserialize messages 
    } 

    public String getKey() { return key; } 
    public String getSender_id() { return sender_id; } 
    public String getSender_username() { return sender_username; } 
    public String getReceiver_username() { return receiver_username; } 
    public String getReceiver_id() { return receiver_id; } 
    public String getChat_id() { return chat_id; } 
    public String getMessage() { return message; } 
    public Firebase getRef() { return ref; } 
    public double getCreatedAt() { return createdAt; } 
    public boolean getRead() { return read; } 

} 

任意のアイデア:ここ

は私のMessageオブジェクトが現在どのようにでしょうか? Firebaseのドキュメントの例は見当たりませんし、更新する前に "legacy Firebase"を使っています。あなたはDataSnapshotからMessageインスタンスを取得する場合

答えて

5

、あなたはそうやっている:

Message message = snapshot.getValue(Message.class) 

を、これはgetValue()から始まっているので、メッセージはDataSnapshotのキーが含まれていません。あなたは何ができるか

Messageを読んだ後、キーを自分で設定されている:

Message message = snapshot.getValue(Message.class); 
message.setKey(snapshot.getKey()); 

あなたは、ジャクソンは自動移入またはシリアライズしようとしていることを保証するために、その場合には@JsonIgnoreようgetKey()をマークしたいと思いますそれ。

+0

すごいです!それをありがとう、期待どおりに働いた:)! – Jamie22

+0

複雑なJSONツリーの各オブジェクトのキーを設定したい場合は、その方法を教えてください。 – manfcas

1

私はDataSnapshotからオブジェクトを作成するための静的メソッドを追加することになった:

public static Message FromSnapshot(DataSnapshot snapshot) 
{ 
    Message msg = snapshot.getValue(Message.class); 
    msg.setKey(snapshot.getKey()); 

    return msg; 
} 
関連する問題