android - 火力地堡 : How to put the currently returned node's key into a POJO as a field

标签 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("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 对象中,但使用新方法(第一个代码块) ,我不知道该怎么做。

可能吗?

编辑

消息类别:

public class Message implements Serializable {
   private String  name;
   private String  msg;
   private String  icon;
   private String  recipient;
   private String  sender;
   private String  shared;
   private Boolean group;
   private Object  time;
   private String  messageid;
   private Boolean local;
   private Boolean delivered;
   private Boolean read;
   private HashMap<String, Boolean> allowed;

   private String file;
   private Boolean attachment;
   private Boolean state;


   public Message(String Name, String Msg, String Recipient, String Sender, String Shared, Boolean Group, String Icon,
                  Object Time, String Messageid, Boolean Local, Boolean Delivered, Boolean Read,
                  HashMap<String, Boolean> Allowed, String File, Boolean Attachment, Boolean State) {
      name = Name;
      msg = Msg;
      recipient = Recipient;
      sender = Sender;
      shared = Shared;
      group = Group;
      time = Time;
      icon = Icon;
      messageid = Messageid;
      local = Local;
      delivered = Delivered;
      read = Read;
      file  = File;
      allowed   = Allowed;
      attachment    = Attachment;
      state         = State;
   }

   public Message() {

   }

   public Boolean getAttachment() {
      return attachment;
   }

   public Boolean getState() {
      return state;
   }

   public HashMap<String, Boolean> getAllowed() {
      return allowed;
   }

   public String getFile() {
      return file;
   }

   public Boolean getDelivered() {
      return delivered;
   }

   public Boolean getRead() {
      return read;
   }

   public Boolean getLocal() {
      return local;
   }

   public String getMessageid() {
      return messageid;
   }

   public String getName() {
      return name;
   }

   public Object getTime() {
      return time;
   }

   public String getMsg() {
      return msg;
   }

   public Boolean getGroup() {
      return group;
   }

   public String getRecipient() {
      return recipient;
   }

   public String getSender() {
      return sender;
   }

   public String getShared() {
      return shared;
   }

   public String getIcon() {
      return icon;
   }
}

最佳答案

您可以通过向 Message 类添加 setter 来实现此目的,然后调用该方法来设置 key 。

public void setMessageid(String messageId) {
    this.messageid = messageId;
}

onDataChange方法内

Message msg = d.getValue(Message.class);
msg.setMessageId(d.getKey());
Success(msg);

关于android - 火力地堡 : How to put the currently returned node's key into a POJO as a field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39763769/

相关文章:

安卓工作室 : Unresolved symbol "Theme" in styles. xml

swift - Firebase:保存和检索 float (Swift)

javascript - 根据 Firebase 中的值从数组中删除键

firebase - Firebase中基于多个where子句的查询

c++ - STL 中的 hash<char*> 函数是否给出 char* 和 size_t 之间的 1-1 映射?

android - 无法使用 PreferenceActivity 中的按钮调用方法

android - 使用支持库 v4 修订版 11 的嵌套 fragment

如果没有 project.properties 文件,Android JNI 将无法编译

java - 排序键是 HashMap 中的日期条目

java - 我们可以将嵌套 map 作为其他 map 中的键吗?