Java 如何从Firebase检索子数据?

Java 如何从Firebase检索子数据?,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我的数据库如下所示,在这里,我想检索mylocation子对象中的数据(请参见附图)。但它不起作用。 如何解决这个问题 我当前的代码如下所示 private void loadAddress() { DatabaseReference ref= FirebaseDatabase.getInstance().getReference("Users"); ref.orderByChild("uid").equalTo(fireb

我的数据库如下所示,在这里,我想检索
mylocation
子对象中的数据(请参见附图)。但它不起作用。 如何解决这个问题

我当前的代码如下所示

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) {

                    }
                });



    }

要获取
mylocation
下的数据,可以使用对该子级的显式调用,如以下代码行所示:

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);
logcat中的结果将是:

5555/79.8571577/6.9448882