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(/* ... */);