Firebase获得所有关键

时间:2017-06-05 19:34:18

标签: android firebase firebase-realtime-database

我希望每个人都能抓住我的firebase数据库上的所有密钥:

26dfg678

我想抓住id: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) { } }); 并将它们放入数组中。这是我的代码:

print

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

1 个答案:

答案 0 :(得分:3)

要执行此操作,您需要使用 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
});

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