处理firebase中的动态密钥

时间:2018-04-17 13:14:59

标签: android firebase firebase-realtime-database

我想按如下方式检索结构:

  

课程>课程和GT;程序>扫描电镜> {主旨名称}个总>出勤> orderbykey.equalsTo(UID)

我有一个问题是迭代密钥是动态的主题,例如。这里的关键是 PA ,其他是 PC ,它将由用户动态推送,并且每个Sem都会有所不同。

我试过这个:

Query subjectQuery = mDatabaseRef.child("courses/"+user.getCourse()+"/"+user.getProgramme()+"/"+user.getSem()+"/subjects");
    subjectQuery.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if(dataSnapshot.exists()){
                Log.d("subjects", String.valueOf(dataSnapshot.getChildrenCount()));
                sub = new Subject[(int) dataSnapshot.getChildrenCount()];
                int i = 0;
                for (DataSnapshot subjectSnapShot: dataSnapshot.getChildren()){
                    sub[i] = new Subject(subjectSnapShot.getValue().toString());
                    Log.d("subject_class","sub["+i+"] : "+sub[i].getName());
                    i++;
                }
            }else{
                Toast.makeText(DashboardActivity.this, "Data Not Found", Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

    Toast.makeText(this, String.valueOf(sub.length), Toast.LENGTH_SHORT).show();

由于监听器为Async,导致该应用崩溃并提供 NullPointerException ,因为sub仍然为空

编辑:原因是获取主题并将其传递给片段。请建议是否有人有更好的方法解决问题

Firebase Structure Here

0 个答案:

没有答案