edublog
edublog

Reputation: 21

How to retrieve the child data from Firebase?

My database looks as follows, in here I want to retrieve the data inside the mylocation child (see the attached image here). But it is not working. How to solve that?

My current code looks as this,

private void loadAddress() {
        DatabaseReference ref= FirebaseDatabase.getInstance().getReference("Users");
        ref.orderByChild("uid").equalTo(firebaseAuth.getUid())
                .addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                        for(DataSnapshot ds: dataSnapshot.getChildren()){
                            String name=""+ds.child("name").getValue();

                            String lat=""+ds.child("name2").getValue();

                             addresstv.setText(name);

                        }
                    }

                    @Override
                    public void onCancelled(@NonNull DatabaseError databaseError) {

                    }
                });



    }

Upvotes: 0

Views: 90

Answers (1)

Alex Mamo
Alex Mamo

Reputation: 139039

To get the data under mylocation, you use an explicit call to that child, like in the following lines of code:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("Users").child(uid);
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String name = dataSnapshot.child("mylocation").child("name2").getValue(String.class);
        double latitude = dataSnapshot.child("mylocation").child("latitude").getValue(Double.class);
        double longitude = dataSnapshot.child("mylocation").child("longitude").getValue(Double.class);
        Log.d("TAG", name + "/" + latitude + "/" + longitude);
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d("TAG", databaseError.getMessage()); //Don't ignore errors!
    }
};
uidRef.addListenerForSingleValueEvent(valueEventListener);

The result in the logcat will be:

5555/79.8571577/6.9448882

Upvotes: 1

Related Questions