繁体   English   中英

如何从 firebase 中检索这些数据?

[英]How to retrive this data from firebase?

在此处输入图像描述

如何从所有用户 ID 未知的医院中检索所有医院名称。

有两种主要方法可以导航您在onDataChange中获得的DataSnapshot

  1. 如果您知道快照中子节点的名称,则可以使用snapshot.child("hospitalData")从其父节点获取子快照。
  2. 如果您不知道快照中子项的名称,您可以遍历snapshot.getChildren()来访问每个子快照。

通过结合这些,您可以导航任何结构。

因此,您需要使用getChildren()遍历用户,然后访问每个用户的child("hospitalData") ,并使用child("hospitalName").getValue(String.class) .

你必须修改你的结构。 创建一个新的节点名称医院并将userId放入每个医院object即

- medicine
    ..........
 - medicineData
     ..........
 - Patients
   ..........
 - Pharmacies
   ..........
 - hospitals
   ..........

这个怎么样。

final FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference ref = database.getReference("medicine/Hospitals");
ref.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        hospitalArrayList.clear();
        for (DataSnapshot item : dataSnapshot.getChildren()) {
            Hospital hospital = item.getValue(Hospital.class);
            hospitalArrayList.add(hospital);
            System.out.println(hospital);
        }
        dataRetrieved();
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        System.out.println("The read failed: " + databaseError.getCode());
    }
});
private void dataRetrieved() {
    adapter.notifyDataSetChanged();
}

Hospital.java 简单示例

public class Hospital {
    public HospitalData hospitalData;

    public Hospital(HospitalData hospitalData) { }

    public Hospital() { }

    public static class HospitalData {
        public String hospitalName;
        public String hospitalAddress;

        public HospitalData(String hospitalName, String hospitalAddress) { }

        public HospitalData() { }

    }

}

您可以像这样在适配器中使用它。

String name = hospitalArrayList.get(position).hospitalData.hospitalName;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM