【发布时间】:2020-01-21 19:31:46
【问题描述】:
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"
}
}
}
我想在Singer 中获取所有type01。我试过这样的代码
@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的歌曲?
【问题讨论】:
-
您试图从上面的查询中检索 child 的孩子。所以它不会像你预期的那样工作。甚至 frank van puff 在他的answer
-
在我之前的回答中,我给了你两个选项:1) 构建你自己的适配器,2) 将你的数据结构更改为歌曲的平面列表,以便 FirebaseUI 可以使用它。您似乎在这里都没有做,这就是它不起作用的原因。
标签: java android firebase firebase-realtime-database