Android 如何使用FirebaseRecyclerAdapter查询Firebase中的多个子项

Android 如何使用FirebaseRecyclerAdapter查询Firebase中的多个子项,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我正在制作一个Android应用程序,要求用户输入一种或多种语言,并将其保存在列表中,然后根据语言返回内容(使用FirebaseRecyclerAdapter),例如,我如何检索阿拉伯语和英语(03,01)的子代?。我所能得到的只是数据的子项,使用: mRef = mFirebaseDatabase.getReference("data"); 我的数据库: "data" : { "Arabic" : { "

我正在制作一个Android应用程序,要求用户输入一种或多种语言,并将其保存在列表中,然后根据语言返回内容(使用FirebaseRecyclerAdapter),例如,我如何检索阿拉伯语和英语(03,01)的子代?。我所能得到的只是数据的子项,使用:

mRef = mFirebaseDatabase.getReference("data");
我的数据库:

"data" : {
    "Arabic" : {
      "01" : {}
    },
    "English" : {
      "03" : {}
    },
    "French" : {
      "02" : {}
    }
}

我认为您可能正在努力解决如何遍历从Firebase读取时返回的
DataSnapshot

要浏览问题中的数据,请执行以下操作:

mRef = mFirebaseDatabase.getReference("data");
mRef.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot languageSnapshot: dataSnapshot.getChildren()) {
            System.out.println(languageSnapshot.getKey()); // "Arabic", "English", "French"
            for (DataSnapshot childSnapshot: languageSnapshot.getChildren()) {
                System.out.println(childSnapshot.getKey()); // "01", "03", "02"
                ...
            }
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        throw databaseError.toException();
    }
}

另请参阅上的Firebase文档。

请提供更详细的数据库,并说明您想要获取的确切数据。感谢您的评论Alex我用数据库更新了帖子。您想要获取的确切数据是什么?他需要从多个孩子那里获取数据。我想要获取列表中所列语言的孩子例如,如果我有一个列表L=[Arabic,French],我想在将数据发送到firebaseRecyclerAdapter之前获取阿拉伯语和法语的子级。谢谢你,弗兰克,可以在firebaseRecyclerAdapter中显示子级快照吗?当然,但是,为您构建一个自定义适配器也有点超出了我们在堆栈溢出问题上可以合理完成的范围。我建议阅读本文,了解如何将答案中的代码应用于自定义适配器。嘿@HamzaBjitro。你对这件事有进一步的了解吗?如果我的答案有用,请单击向上投票按钮(▲) 如果它回答了您的问题,请单击复选标记(✓) 接受它。这样别人就会知道你已经得到了(足够的)帮助。也请参见