繁体   English   中英

Android Firebase如何获取父节点的所有子节点值?

[英]Android Firebase how to fetch all child nodes values of a parent node?

我有一个firebase数据库,结构如下:

rides{
     A{
       //related datas for a
     }
     B{
       //related datas for b
     }}

所以主要的问题是我想获取节点A和B的所有值。 我可以使用以下方法获取单节点的值:

   final Firebase ridesDateRef = ref.child("A");

    // Attach an listener to read the data at our posts reference
    ridesDateRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot snapshot) {
            System.out.println(snapshot.getValue());

            availableRidesList = new ArrayList<>();
            System.out.println("There are " + snapshot.getChildrenCount() + " rides");
            for (DataSnapshot postSnapshot: snapshot.getChildren()) {
                AvailableRidesFirebaseObject rides = postSnapshot.getValue(AvailableRidesFirebaseObject.class);


                AvailableRidesFirebaseObject availableRidesFirebaseObject = new AvailableRidesFirebaseObject();
                availableRidesFirebaseObject.setAdded_on(rides.getAdded_on());
                availableRidesFirebaseObject.setCode(rides.getCode());
                availableRidesFirebaseObject.setDate_of_ride(rides.getDate_of_ride());
                availableRidesFirebaseObject.setDropoff_location(rides.getDropoff_location());
                availableRidesFirebaseObject.setDropoff_coordinate(rides.getDropoff_coordinate());
                availableRidesFirebaseObject.setFullname(rides.getFullname());
                availableRidesFirebaseObject.setOffered_by(rides.getOffered_by());
                availableRidesFirebaseObject.setPickup_location(rides.getPickup_location());
                availableRidesFirebaseObject.setPickup_coordinate(rides.getPickup_coordinate());
                availableRidesFirebaseObject.setSeats(rides.getSeats());
                availableRidesFirebaseObject.setShare(rides.getShare());
                availableRidesFirebaseObject.setVechile_type(rides.getVechile_type());
                availableRidesList.add(availableRidesFirebaseObject);

                System.out.println(rides.getSeats());
            }

            try{
                AvailableRidesListAdapter adapter = new AvailableRidesListAdapter(getActivity(), R.layout.single_available_ride, availableRidesList);
                availableRideList.setAdapter(adapter);
                loading.setVisibility(View.GONE);
            }catch(NullPointerException ne){}



        }

        @Override
        public void onCancelled(FirebaseError firebaseError) {
            System.out.println("The read failed: " + firebaseError.getMessage());
        }
    });

我正在获取单一价值,但我想获取所有数据价值。我该如何获取呢?

只需在树中更高一级开始并添加一个额外的循环:

ref.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot topSnapshot) {
      for (DataSnapshot snapshot: topSnapshot.getChildren()) {
        for (DataSnapshot postSnapshot: snapshot.getChildren()) {
            AvailableRidesFirebaseObject rides = postSnapshot.getValue(AvailableRidesFirebaseObject.class);
            AvailableRidesFirebaseObject availableRidesFirebaseObject = new AvailableRidesFirebaseObject();
            availableRidesFirebaseObject.setAdded_on(rides.getAdded_on());
            availableRidesFirebaseObject.setCode(rides.getCode());
            availableRidesFirebaseObject.setDate_of_ride(rides.getDate_of_ride());
            availableRidesFirebaseObject.setDropoff_location(rides.getDropoff_location());
            availableRidesFirebaseObject.setDropoff_coordinate(rides.getDropoff_coordinate());
            // rest of the code left out for brevity

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM