Android Firebase:如何将当前返回的节点密钥作为字段放入POJO中

Android Firebase:如何将当前返回的节点密钥作为字段放入POJO中,android,firebase,hashmap,firebase-realtime-database,Android,Firebase,Hashmap,Firebase Realtime Database,我希望改进这个问题的标题 假设我有以下几点 abstract class getMessage { public getMessage(String k) { get(k); } public abstract void Success(Message message); private void get(final String k) { DatabaseReference r = DB.child("

我希望改进这个问题的标题

假设我有以下几点

abstract class getMessage {
      public getMessage(String k) {
         get(k);
      }

      public abstract void Success(Message message);
      private void get(final String k) {
         DatabaseReference r    = DB.child("chat/messages/" + k);
         r.addListenerForSingleValueEvent(new ValueEventListener(){
            @Override
            public void onDataChange(DataSnapshot d) {
               Message msg = d.getValue(Message.class);
               Success(msg);
            }

            @Override
            public void onCancelled(DatabaseError e) {
               Log.w("Get Message", e.toException());
            }
         });
      }
   }
Message类有一个字段messageid,它应该是返回节点的键,但返回的数据是该键的子项

在此之前,我插入了以下字段:

Long time         = d.child("time").getValue();
Long String       = d.child("text").getValue();
Long messageid    = d.getKey();
Message message   = new Message(time, messageid, text);
正如您在上面所看到的,我能够获取messageid并将其放入Message对象中,但是使用新的approachFirst代码块,我不知道如何做到这一点

可能吗

编辑

消息类:


您可以通过向消息类添加一个setter,然后调用该方法来设置密钥

public void setMessageid(String messageId) {
    this.messageid = messageId;
}
在onDataChange方法内部


你能在课堂上发表你的信息吗?DataSnapshot.getKey返回一个字符串,因此您能够执行这个长消息id=d.getKey,这非常奇怪@威尔克:有点长,抱歉,但我现在就说。
public void setMessageid(String messageId) {
    this.messageid = messageId;
}
Message msg = d.getValue(Message.class);
msg.setMessageId(d.getKey());
Success(msg);