Java 如何使用Android Studio中Firebase数据库的查询获取子节点而不使用唯一ID?

Java 如何使用Android Studio中Firebase数据库的查询获取子节点而不使用唯一ID?,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我在Android Studio中设置了一个RecyclerAdater,我需要将我的数据库指向节点课程,以获取所有子节点(CourseDate、CourseId,…),这些子节点位于节点Courses的两个深处,而使用firebase中的查询不知道它们的唯一ID。那我怎么做呢 这就是我正在尝试做的,以便在此之后我可以将查询对象传递给我的firebasecycleroptions,如下所示 FirebaseRecyclerOptions<AllCourses> RecyclerOp

我在Android Studio中设置了一个
RecyclerAdater
,我需要将我的数据库指向节点课程,以获取所有子节点(CourseDate、CourseId,…),这些子节点位于节点
Courses
的两个深处,而使用firebase中的查询不知道它们的唯一ID。那我怎么做呢

这就是我正在尝试做的,以便在此之后我可以将查询对象传递给我的
firebasecycleroptions
,如下所示

FirebaseRecyclerOptions<AllCourses> RecyclerOption=new FirebaseRecyclerOptions.Builder<AllCourses>()
            .setQuery( query,AllCourses.class ).build();
FirebaseRecyclerOptions RecyclerOption=新建FirebaseRecyclerOptions.Builder()
.setQuery(query,AllCourses.class).build();
但这似乎行不通……任何帮助都将不胜感激

在节点课程中有两种深度

要解决此问题,您需要在
课程
节点中循环两次,为此,我建议您使用以下代码行:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference coursesRef = rootRef.child("Courses");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        List<AllCourses> list = new ArrayList<>();
        for(DataSnapshot dSnapshot : dataSnapshot.getChildren()) {
            for(DataSnapshot ds : dSnapshot.getChildren()) {
                AllCourses allCourses = ds.getValue(AllCourses.class);
                list.add(allCourses);
            }
        }

        //Do what you need to do with the list
        Log.d("TAG", list.size());
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        Log.d("TAG", databaseError.getMessage()); //Don't ignore potential errors!
    }
};
coursesRef.addListenerForSingleValueEvent(valueEventListener);
DatabaseReference rootRef=FirebaseDatabase.getInstance().getReference();
DatabaseReference CourseRef=rootRef.child(“课程”);
ValueEventListener ValueEventListener=新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
列表=新的ArrayList();
对于(DataSnapshot dSnapshot:DataSnapshot.getChildren()){
对于(DataSnapshot ds:dSnapshot.getChildren()){
AllCourses AllCourses=ds.getValue(AllCourses.class);
列表。添加(所有课程);
}
}
//对列表执行您需要执行的操作
Log.d(“TAG”,list.size());
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
Log.d(“TAG”,databaseError.getMessage());//不要忽略潜在的错误!
}
};
coursesRef.addListenerForSingleValueEvent(valueEventListener);

评论不用于扩展讨论;这段对话已经结束。
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference coursesRef = rootRef.child("Courses");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        List<AllCourses> list = new ArrayList<>();
        for(DataSnapshot dSnapshot : dataSnapshot.getChildren()) {
            for(DataSnapshot ds : dSnapshot.getChildren()) {
                AllCourses allCourses = ds.getValue(AllCourses.class);
                list.add(allCourses);
            }
        }

        //Do what you need to do with the list
        Log.d("TAG", list.size());
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        Log.d("TAG", databaseError.getMessage()); //Don't ignore potential errors!
    }
};
coursesRef.addListenerForSingleValueEvent(valueEventListener);