簡體   English   中英

如何在 Android Studio 中使用來自 Firebase 數據庫的查詢在不使用唯一 ID 的情況下獲取子節點?

[英]How to Fetch child nodes without using unique ids using Query from Firebase database in Android Studio?

我在 Android Studio 中設置了一個RecyclerAdater ,我需要將我的數據庫指向節點 Courses 以獲取所有子節點(CourseDate,CourseId,...),這些子節點在節點Courses有 2 種深度,而無需使用查詢知道它們的唯一 ID在火力基地。 那么我該怎么做呢?

數據庫圖片

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 ,如下所示;

FirebaseRecyclerOptions<AllCourses> RecyclerOption=new FirebaseRecyclerOptions.Builder<AllCourses>()
            .setQuery( query,AllCourses.class ).build();

但它似乎沒有解決......任何幫助將不勝感激。

在節點課程中有 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) {
        Log.d("TAG", databaseError.getMessage()); //Don't ignore potential errors!
    }
};
coursesRef.addListenerForSingleValueEvent(valueEventListener);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM