繁体   English   中英

如何从 Firebase 中检索子数据?

[英]How to retrieve the child data from Firebase?

我的数据库如下所示,在这里我想检索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

暂无
暂无

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

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