【问题标题】:How to get a Node inside Main Node of Firebase database?如何在 Firebase 数据库的主节点中获取节点?
【发布时间】:2016-12-17 23:25:14
【问题描述】:

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

如你所见,有一个名为 session 的节点,它包含一些对象,每个 session 对象内部还有另一个节点,称为 messages ,有时没有消息节点。 我在获取对象 whiteout 消息节点时没有问题,当我想用​​消息解析对象时遇到问题。

这是我的课程:

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());
                }


            }

正如我之前所说,没有消息的对象没有问题,但是当有消息节点时,我收到此错误:

No setter/field for -KZCmBfXzYFJR2HcjMrO found on class ir.srico.locshare.items.Items_Messages

我该如何解决问题?

【问题讨论】:

    标签: android json firebase firebase-realtime-database


    【解决方案1】:

    我相信您在Items_Sessions 中的messages 属性需要更改为:

    Map<String, Items_Messages> messages;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-03
      • 2017-03-26
      • 2018-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-27
      相关资源
      最近更新 更多