我有以下firebase类。患者和使用者(医生,医院的东西)是多对多的关系。
患者类
public class Patients {
public String name;
public String surname;
public ArrayList<String> users;
}
这是我在firebase上迭代数据而不是 users
(表patients
NOT 表中的字段)字段的方式patients
表上的数据库。
database.child("patients").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot patient : dataSnapshot.getChildren()){
Patients p = patient.getValue(Patients.class);
//use p object
listViewAdapter.notifyDataSetChanged();
}
patientsList.setAdapter(listViewAdapter);
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
当然,这不适用于patients
表的当前格式,因为users
的子项(表patients
的字段不表,需要另一个循环),我明白了。我不能得到的是当我必须做另一个循环时,如何将Patients
类与patients
表关联起来。我无法找到Patients p = patient.getValue(Patients.class)
与另一个需要迭代的字段一起工作的方法。
我的目标是包含p
类的对象Patients
name = Mark
,surname = Marks
,users[] = [y92pZ4rynpUFSOm3MrzQncimu153,...]
。我不知道如何构建pojo以及迭代孩子的正确方法,以便用户ArrayList
将包含每个患者的所有users
字段并使用类似{ {1}}
答案 0 :(得分:1)
将pojo类与公共字段一起使用no argument constructor
以及相应的setter和getter是完全错误的!您的所有文件都需要是私有的,您只需通过公共设置者和获取者访问它们。请记住,对于Firebase,无参数构造函数是必需的。这就是你无法映射该节点的原因。将它们添加到您的pojo类中,您的问题就会得到解决。