Android 如何在Firebase数据库的主节点内获取节点?

Android 如何在Firebase数据库的主节点内获取节点?,android,json,firebase,firebase-realtime-database,Android,Json,Firebase,Firebase Realtime Database,我正在尝试解析firebase数据库数据。 让我展示一下数据库的结构: 正如您看到的,有一个名为sessions的节点,它包含一些对象,在每个session对象中还有另一个名为messages的节点,有时没有messages节点。 我在获取对象时不会遇到问题,但在使用消息解析对象时会遇到问题 这是我的课程: public class Items_Sessions implements Serializable { public String address; public String cr

我正在尝试解析firebase数据库数据。 让我展示一下数据库的结构:

正如您看到的,有一个名为sessions的节点,它包含一些对象,在每个session对象中还有另一个名为messages的节点,有时没有messages节点。 我在获取对象时不会遇到问题,但在使用消息解析对象时会遇到问题

这是我的课程:

public class Items_Sessions implements Serializable {

public String address;
public String creator;
public String date;
public String description;
public int duration;
public double latitude;
public double longitude;
public int margin;
public String subject;
public Items_Messages messages;

public  String sessionID;
public String sessionInviteStatus="pending";

public Items_Sessions(){}



public Items_Sessions(String address,String creator,String date,String description,int duration,double lat,double longitude,int margin,
                      String subject){
    this.address = address;
    this.creator = creator;
    this.date = date;
    this.description = description;
    this.duration = duration;
    this.latitude = lat;
    this.longitude = longitude;
    this.margin = margin;
    this.subject = subject;

}

public Items_Sessions(String address,String creator,String date,String description,int duration,double lat,double longitude,int margin,
                      Items_Messages messages,String subject){
    this.address = address;
    this.creator = creator;
    this.date = date;
    this.description = description;
    this.duration = duration;
    this.latitude = lat;
    this.longitude = longitude;
    this.margin = margin;
    this.subject = subject;
    this.messages = messages;

}
}

这是我的消息类:

 public class Items_Messages {

public String senderid;
public String sendername;
public String text;


public Items_Messages(){}

public Items_Messages(String id,String name,String text){
    this.senderid = id;
    this.sendername = name;
    this.text = text;
}
}

以下是我获取数据的方式:

mRef = mDB.getReference("sessions");
mRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            List<Items_Sessions> mSessionsItems = new ArrayList<>();
            for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
                try {

                        Items_Sessions session = postSnapshot.getValue(Items_Sessions.class);
                        session.sessionID = postSnapshot.getKey();
                        if (session.creator.equalsIgnoreCase(mAuth.getCurrentUser().getUid()))
                            mSessionsItems.add(session);

                }catch (Exception e){
                    Log.i("XX",e.toString());
                }


            }

如何解决问题?

我相信您在
项目\u会话
中的
消息
属性需要更改为:

Map<String, Items_Messages> messages;
映射消息;

我认为您在
项目\u会话中的
消息
属性需要更改为:

Map<String, Items_Messages> messages;
映射消息;