如何在firebase android中检索节点名称和节点属性

时间:2017-04-09 00:22:56

标签: android firebase firebase-realtime-database firebase-authentication

请不要使用firebase,并尝试获取节点名称,如下所示 My database structure

我在用户节点下有一个节点课程,在课程节点下有不同的课程代码节点。我想要实现的是获取所有课程代码及其课程名称并将其存储在数组列表中,例如存储课程代码的数组列表和存储课程名称的另一个 下面的代码就是我所做的

 final ArrayList<String> test=new ArrayList<String>();
myFirebaseRef.child(uid).child("Course").child("CEESE001").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
                courses ok=snapshot.getValue(courses.class);
            test.add(ok.getCourseName());

            }
adapter = new ArrayAdapter<String>(getContext(), android.R.layout.simple_spinner_item, test);

            // Here, set the data in  ListView
            list.setAdapter(adapter);

        }

上面的代码是我试过但我需要动态获取课程代码而不是放一个静态课程代码请问我该如何实现。

1 个答案:

答案 0 :(得分:3)

试试这个

    List<String> coursesNames=new ArrayList<String>();
    List<String> coursesCodes=new ArrayList<String>();
    DatabaseReference mDatabase= FirebaseDatabase.getInstance().getReference().child("users").child(uid).child("Course");
    mDatabase.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for(DataSnapshot snap:dataSnapshot.getChildren()){
                coursesCodes.add(snap.getKey());
                coursesNames.add(snap.child("Course Details").child("courseName").getValue(String.class));
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });