android - 检索 firebase 字段的父项和子项

标签 android firebase android-studio firebase-realtime-database

我正在尝试获取 Firebase 数据库中某个字段的父值及其子值。 firebase database 澄清:

我想遍历快照以找到想要通过他或她的 ID 登录的用户,之后我想获得该 ID 的父级(即用户是女性还是男性)之后我想获得州和名称。

所以我正在做的是:

database=FirebaseDatabase.getInstance();
rootRef = database.getReference();
users = rootRef.child("Users");

然后

users.orderByChild("name").addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot child : dataSnapshot.getChildren()) {
            if (child.getValue().equals(curUser.getUid())) {
                String gender = child.getKey().toString();
                currentPolUser.setuGender(gender);
                currentPolUser.setuName(child.child("Name").getValue().toString());
                Log.d("FirebaseUsers", "SUCCESSSSSS: "+currentPolUser.getuName() + " " + currentPolUser.getuGender());
            }
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});

问题是 child.getValue() 返回一个无法与 User id 字符串进行比较的对象。

最佳答案

试试这个:

 ref.child("Users").orderByChild("name").addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot child : dataSnapshot.getChildren()) {
                String gender = child.getKey();
                for(DataSnapshot finalChild : child.getChildren()){
                    if (finalChild.getKey().equals(curUser.getUid())) {
                        HashMap<String, Object> map = (HashMap<String, Object>) finalChild.getValue();
                        String name = (String) map.get("name");
                        currentPolUser.setuGender(gender);
                        currentPolUser.setuName(name);
                        Log.d("FirebaseUsers", "SUCCESSSSSS: "+currentPolUser.getuName() + " " + currentPolUser.getuGender());

                        Log.e("TTT", name);
                    }
                }
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

关于android - 检索 firebase 字段的父项和子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49637840/

相关文章:

java - Android 的安全开发设置

android - fragment - 获取 View 在调用 onCreateView 时已经有父错误

ios - 无法将实时数据库代码转换为 Firestore 代码

android - 无法实例化 Activity ...在路径 : DexPathList (with instant run) 上找不到类 WelcomeActivity

带有 Sqlite 的 Android - 如何检查表是否存在以及是否为空

android - 重新启动后尝试在android中重新安排以前的警报通知的代码?并登录我的手机?

android - 将数据传递给自定义 View 类

java - 单击监听器不会切换 Activity

Firebase 函数 - admin.firestore() get() 在本地服务上引发身份验证错误

java - 如何将数据从 RecyclerAdapter 类发送到主 Activity