Java 如何使用Android Studio中Firebase数据库的查询获取子节点而不使用唯一ID?
我在Android Studio中设置了一个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
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);