【发布时间】:2021-03-27 14:22:19
【问题描述】:
如何从所有用户 ID 未知的医院中检索所有医院名称。
【问题讨论】:
-
在
Hospitals节点中运行一个循环。然后对于每个孩子,从该孩子那里获取医院名称
标签: java android firebase firebase-realtime-database android-recyclerview
如何从所有用户 ID 未知的医院中检索所有医院名称。
【问题讨论】:
Hospitals 节点中运行一个循环。然后对于每个孩子,从该孩子那里获取医院名称
标签: java android firebase firebase-realtime-database android-recyclerview
有两种主要方法可以导航您在onDataChange 中获得的DataSnapshot。
snapshot.child("hospitalData") 从其父节点获取那个子快照。snapshot.getChildren() 以访问每个子项快照。通过组合这些,您可以导航任何结构。
因此,您需要使用getChildren() 遍历用户,然后访问每个用户的child("hospitalData"),并使用child("hospitalName").getValue(String.class) 之类的内容获取每个属性的值。
【讨论】:
这个怎么样。
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;
【讨论】:
你必须修改你的结构。 创建一个新的节点名称医院并将 userId 放入每个医院对象中 即
- medicine
..........
- medicineData
..........
- Patients
..........
- Pharmacies
..........
- hospitals
..........
【讨论】: