如何使用Android在Firebase数据库中获得子值?

时间:2019-09-25 02:53:57

标签: android firebase firebase-realtime-database

Previously,我要求在Firebase中获取数据。但是我无法获得价值……我的数据库是这样的。

{Singer :
    {Eminem :
        {01 :
            songName : "Rap god",
            songType : "type01"
        },
        {02 :
            songName : "Till I collapse",
            songType : "type02"
        }
    },
    {Lauv :
        {01 :
            songName : "I Like Me Better",
            songType : "type01"
        },
        {02 :
            songName : "lonely",
            songType : "type03"
        }
    },
    {Alan Walker :
        {01 : 
            songName : "All Falls Down",
            songType : "type02"
        },
        {02 :
            songName : "On My Way",
            songType : "type01"
        }
    }  
}            

我想让所有type01中的所有Singer。我尝试过这样的代码

@Override
public void onBindViewHolder(@NonNull MyHolder holder, int i) {
    ...
    Query myQuery = FirebaseDatabase.getInstance().getReference().child("Singer").orderByChlid("songType").equalsTo("type01");
    FirebaseRecyclerOption.Builder<ItemModel>.setQuery(myQuery, new SanpshotParser<ItemModel>() {
        @NonNull
        @Override
        public ItemModel parseSnapshot(@NonNull DataSnapshot snapshot) {
            String songStr = snapshot.child("songName").getValue().toString();
            String typeStr = snapshot.child("songType").getValue().toString();

            return new ItemModel(songStr, typeStr);
        }
    }).build();
    ...
}

但是我无法获得想要的东西。 FirebaseDatabase.getInstance().getReference().child("Singer").orderByChild("songType").equalsTo("type01")无法读取功能parseSnapshot中的数据。如何获得所有类型为type01的歌手的歌曲?

1 个答案:

答案 0 :(得分:2)

您需要更进一步,查询才能访问songType

FirebaseDatabase.getInstance().getReference().child("Singer").child("Eminem").orderByChild("songType").equalsTo("type01")