简体   繁体   中英

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

I have a firebase database and the structure is as :

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

so the main problem is i want to get all the values of nodes A and B . I am able to get the values of single node by using the following:

   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());
        }
    });

I am getting single value but I want to get all data value.How can i get that?

Simply start one level higher in the tree and add an extra loop:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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