代码之家  ›  专栏  ›  技术社区  ›  Manolis Pap

Firebase从父级和子级检索数据并将其分配给类

  •  0
  • Manolis Pap  · 技术社区  · 8 年前

    我有以下firebase类。患者和用户(医生、医院员工)是一种多对多关系。 enter image description here

    患者类别

    public class Patients {
        public String name;
        public String surname;
        public ArrayList<String> users;
    }
    

    这就是我遍历数据的方式 没有 这个 users (表格字段 patients firebase数据库上的表)字段 患者 桌子

    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 与一起上课 患者 表时,我必须做另一个循环。我想不出办法 Patients p = patient.getValue(Patients.class) 与另一个需要迭代的领域合作。

    我的目标就是目标 p 属于 患者 要包含的类,例如 name = Mark surname = Marks users[] = [y92pZ4rynpUFSOm3MrzQncimu153,...] . 我不知道pojo应该如何构造,以及迭代子对象的正确方法是什么 ArrayList 将包含所有 用户 字段,并使用类似 患者p=患者。getValue(患者类)

    1 回复  |  直到 8 年前
        1
  •  1
  •   Alex Mamo    8 年前

    拥有公共领域的pojo类,并且没有 no argument constructor 而相应的二传手和得分手是完全错误的!您的所有文件都需要是私有的,您只需要通过公共setter和getter访问它们。请记住,无参数构造函数对于Firebase是必需的。这就是为什么无法映射该节点。将它们添加到您的pojo类中,您的问题就会得到解决。

    推荐文章