Firebase 获取所有密钥

Tir*_*iru 3 android firebase firebase-realtime-database

大家好,我想捕获我的 firebase 数据库上的所有键:

    Users-
         26dfg678-
                 Name: jack
                 Job: Farmer

         43jkhjh4-
                 Name: bill
                 Job: ICT
Run Code Online (Sandbox Code Playgroud)

我想捕获 id:26dfg678并将43jkhjh4它们放入一个数组中。这是我的代码:

    final DatabaseReference database_nomi = firebaseDatabase.getReference().child("Users");
            database_nomi.addChildEventListener(new ChildEventListener() {
                @Override
                public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                //here                    
                **name[0] = dataSnapshot.getKey();
                    Provee.setText(name[0]);**

                }
                @Override
                public void onChildChanged(DataSnapshot dataSnapshot, String s) {

                }

                @Override
                public void onChildRemoved(DataSnapshot dataSnapshot) {

                }

                @Override
                public void onChildMoved(DataSnapshot dataSnapshot, String s) {

                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });
Run Code Online (Sandbox Code Playgroud)

如果我这样做,只需要最后一个,但我想要所有..

gui*_*vao 5

为此,您需要使用ValueEventListener(和addListenerForSingleValueEvent)读取 Firebase 快照。

databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        if (dataSnapshot.exists()) {
            int i = 0;
            for(DataSnapshot d : dataSnapshot.getChildren()) {
                name[i] = d.getKey();
                i++;
            }
        }
    }//onDataChange

    @Override
    public void onCancelled(DatabaseError error) {

    }//onCancelled
});
Run Code Online (Sandbox Code Playgroud)

此代码使用foreach读取所有 dataSnapshot 子级,并在每次迭代时将其键保存在数组中。