【问题标题】:how to retrieve node names and node properties in firebase android如何在firebase android中检索节点名称和节点属性
【发布时间】:2017-04-09 00:22:55
【问题描述】:

请是 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);

        }

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

【问题讨论】:

  • 要获取所有课程名称和代码吗?
  • 是的,这就是我想要的
  • 我发布了答案

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


【解决方案1】:

试试这个

    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) {

        }
    });

【讨论】:

  • 太棒了,如果有帮助,请考虑将答案标记为正确
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多