如何从Firebase数据库获取所有子节点?

时间:2018-12-25 18:10:07

标签: android database firebase firebase-realtime-database

这是我的结构。我正在尝试为我的应用编写记分牌,但我无法获得用户名和分数。我想确保该用户名和排序列表中的得分均排名前10位。

这是我的代码:我只能获取用户名。

databaseReference = FirebaseDatabase.getInstance().getReference("Users");
    databaseReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                Userlist = new ArrayList<String>();
                // Result will be holded Here

                for (DataSnapshot dsp : dataSnapshot.getChildren()) {
                    for (DataSnapshot as : dataSnapshot.getChildren()) {
                        String userkey= as.getKey();
                        Userlist.add(userkey); //add result into array list

                    }
                }

                un.setText(Userlist.get(2));

            }

        @Override
        public void onCancelled(DatabaseError error) {

        }
    });

enter image description here

1 个答案:

答案 0 :(得分:2)

尝试以下操作:

databaseReference = FirebaseDatabase.getInstance().getReference("Users");
databaseReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            Userlist = new ArrayList<String>();
            // Result will be holded Here

            for (DataSnapshot dsp : dataSnapshot.getChildren()) {
                    String userkey  = dsp.getKey();
                    String scores   = dsp.child("scorehigh").getValue().toString();
                    Userlist.add(userkey); //add result into array list
                }
            }

            un.setText(Userlist.get(2));

        }

    @Override
    public void onCancelled(DatabaseError error) {

    }
});

引用位于Users,那么您需要循环两次才能访问属性scorehighusername