我在Android Studio中设置了RecyclerAdater
,我需要将数据库指向节点Courses,以获取节点2层深处的所有子节点(CourseDate,CourseId等)。 {1}},而在Firebase中使用查询不知道其唯一ID。那我该怎么办呢?
Courses
我正在尝试这样做,以便之后可以将查询对象传递给Query query= (Query) CourseDatabaseRefer.addChildEventListener( new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
dataSnapshot.getChildren();
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
dataSnapshot.getChildren();
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
} );
,如下所示;
FirebaseRecyclerOptions
但是似乎还没有解决……任何帮助将不胜感激。
答案 0 :(得分:0)
在节点Courses中有2种深度
要解决此问题,您需要循环遍历Courses
节点两次,为此,我建议您使用以下代码行:
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) {}
};
coursesRef.addListenerForSingleValueEvent(valueEventListener);