如何针对该Firebase层级结构创建GroupMessages模型类?
如何针对该Firebase结构创建模型类?

先帮你理清楚你的Firebase数据结构:group_messages根节点下,第一层是UserId,每个UserId下对应多个Group_id,再往下就是每个群组的message_id,每个message_id里存着具体的消息内容。
你已经写了基础的模型类,但还需要处理seen节点,同时适配Firebase的序列化要求,我来帮你调整完善:
单个消息的模型类(对应message_id下的数据)
这个类用来映射每条消息的具体字段,包括你提到的seen节点(从结构看它是一个键为用户ID、值为已读状态的Map):
public class GroupMessage { private String message; private String from; private String type; private long time; private Map<String, Boolean> seen; // 注意:Firebase反序列化必须有无参构造函数 public GroupMessage() {} // 可选:带参构造函数,方便手动创建消息对象 public GroupMessage(String message, String from, String type, long time, Map<String, Boolean> seen) { this.message = message; this.from = from; this.type = type; this.time = time; this.seen = seen; } // Getter & Setter 方法 public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public String getFrom() { return from; } public void setFrom(String from) { this.from = from; } public String getType() { return type; } public void setType(String type) { this.type = type; } public long getTime() { return time; } public void setTime(long time) { this.time = time; } public Map<String, Boolean> getSeen() { return seen; } public void setSeen(Map<String, Boolean> seen) { this.seen = seen; } }
适配多层结构的模型类(可选)
如果你需要处理整个UserId下的所有群组消息,可以用嵌套模型类来映射层级关系:
public class UserGroupMessagesContainer { // 键是Group_id,值是该群组下所有消息的映射(message_id -> GroupMessage) private Map<String, Map<String, GroupMessage>> groupMessages; public UserGroupMessagesContainer() {} public Map<String, Map<String, GroupMessage>> getGroupMessages() { return groupMessages; } public void setGroupMessages(Map<String, Map<String, GroupMessage>> groupMessages) { this.groupMessages = groupMessages; } }
给你的小提示
如果只是要在RecyclerView里展示某个特定群组的消息,其实不需要处理外层的UserId和Group_id层级:直接监听Firebase节点group_messages/{你的目标UserId}/{目标GroupId},然后把每个message_id下的数据转换成GroupMessage对象,收集到列表里传给RecyclerView.Adapter就可以啦~
另外要注意,原模型类里缺少无参构造函数,Firebase进行反序列化的时候必须要有这个,不然会抛出异常哦!
内容的提问来源于stack exchange,提问作者user8724610
相关产品推荐
相关产品推荐

