Java 如何从firebase实时数据库获取下一个子项的数据并在列表视图中显示
我正在开发一个音频圣训,现在我想将第一个键显示为一个类别,如Java 如何从firebase实时数据库获取下一个子项的数据并在列表视图中显示,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我正在开发一个音频圣训,现在我想将第一个键显示为一个类别,如Ramadan,Zakat等,在每个类别中,都会有很多音频圣训的标题和音频URL 这是数据库结构映像: public void readHadiths(最终数据状态DataStatus){ mDbReference.addValueEventListener(新的ValueEventListener(){ @凌驾 public void onDataChange(@NonNull DataSnapshot DataSnapshot){
Ramadan
,Zakat
等,在每个类别中,都会有很多音频圣训的标题和音频URL
这是数据库结构映像:
public void readHadiths(最终数据状态DataStatus){
mDbReference.addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
圣训清除();
列表键=新的ArrayList();
对于(DataSnapshot键节点:DataSnapshot.getChildren()){
添加(keyNode.getKey());
String title=keyNode.child(“title”).getValue(String.class);
Hadith Hadits=keyNode.getValue(Hadith.class);
hadiths.add(Hadits);
日志d(“标签”,标题);
}
dataStatus.DataLoaded(hadith,key);
}
您无法查询实际数据库结构以一次性获取所有Hadith
对象,因为这些对象中的每一个都存在于单独的节点中。要解决此问题,我建议您通过减少节点数来更改数据库结构,如下所示:
Firebase-root
|
--- Hadiths
|
--- hadith1
| |
| --- title: "This is hadith1 title"
| |
| --- url: "eg.example.com"
| |
| --- type: "Ramadan"
|
--- hadith2
|
--- title: "This is hadith2 title"
|
--- url: "eg.example.com"
|
--- type: "Zakat"
现在,要查询斋月的所有圣训,请使用以下查询:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
Query query = rootRef.child("Hadiths").orderByChild("type").equalTo("Ramadan");
query.addListenerForSingleValueEvent(/* ... */);
嗨,艾哈迈德!你试过我的解决方案了吗?它能起作用吗?如果你认为我的答案对你有帮助,请考虑通过点击复选来接受它。✔️) 在投票箭头的左边。应该换成绿色。我会很感激的。谢谢!
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
Query query = rootRef.child("Hadiths").orderByChild("type").equalTo("Ramadan");
query.addListenerForSingleValueEvent(/* ... */);