如何从Firebase实时数据库获取所有子值并将其存储在数组列表中

时间:2019-07-27 06:51:24

标签: java android firebase firebase-realtime-database google-cloud-firestore

我熟悉firestore,但不确定如何从实时数据库中获取值。这是我下面的数据库 data base image

如您所见,我有UID,在该UID下存储了多个文档引用。这是我的工作方式:

           firebaseDatabase.getReference(firebaseAuth.getCurrentUser().getUid()).push().setValue(documentReference.getPath());

我想在UID下获取整个文档引用,并将其存储在数组列表中,或者仅遍历每个文档引用。谢谢

1 个答案:

答案 0 :(得分:0)

尝试以下。

DatabaseReference mDatabaseRef = FirebaseDatabase.getInstance().getReference(firebaseAuth.getCurrentUser().getUid());

ArrayList<String> docRefList =new ArrayList<>();    

mDatabaseRef.addListenerForSingleValueEvent(new ValueEventListener() {
   @Override
   public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
              String docRef = postSnapshot.getValue(String.class);
              docRefList.add(docRef);
        }
   }
   @Override
   public void onCancelled(DatabaseError error) {
        Log.d(TAG, "Error Load");
   }
});

请记住,onDataChange()是从Firebase DB读取的异步调用。因此,对于收到的数据进行任何后期处理,都必须等到数据读取完成。