首页 文章

如何在firebase中获取所有孩子的数据并将其显示到我的Android应用程序中?

提问于
浏览
0

我的Firebase实时数据库中有这个结构:

enter image description here

我如何计算数据并在我的应用程序中显示,我应该使用哪个听众来获取所有孩子?

4 回答

  • 0

    有几种方法可以实现这一目标 . 我使用以下方式:

    FirebaseDatabase.getInstance()
                        .getReference()
                        .child("demografi")
                        .addListenerForSingleValueEvent(new ValueEventListener() {
                            @Override
                            public void onDataChange(DataSnapshot dataSnapshot) {
                                for (DataSnapshot dataSnap : dataSnapshot.getChildren()) {
                                    YourObject object = dataSnap.getValue(YourObject.class);
    
                                    // Use your object as needed
                                }
    
                            }
    
                            @Override
                            public void onCancelled(DatabaseError databaseError) {
    
                            }
                        });
    

    dataSnapshot 返回引用的子项 . 一旦拥有它,您所要做的就是遍历它们,您可以根据需要访问"all children" .

  • 0
    FirebaseDatabase.getInstance()
            .getReference()
            .child("demografi")
            .addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    if (dataSnapshot.exists()) {
    
                        /** Qty of data in demografi, this is what you want. */
                        long Count = dataSnapshot.getChildrenCount();
    
                    }
                }
                @Override
                public void onCancelled(DatabaseError databaseError) {
    
                }
            });
    

    如果你想实时监控数据的数量,

    你必须用[addValueEventListener]替换[addListenerForSingleValueEvent] .

  • 0

    我会更喜欢这种方式 -

    String email, gender, nama;
    DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("demografi");
    
    databaseReference.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
            // To get children count
            dataSnapshot.getChildrenCount();
    
            email = dataSnapshot.child("email").getValue().toString();
            gender = dataSnapshot.child("gender").getValue().toString();
            nama = dataSnapshot.child("nama").getValue().toString();
            // and so on..
        }
    
        @Override
        public void onChildChanged(DataSnapshot dataSnapshot, String s){
        }
    
        @Override
        public void onChildRemoved(DataSnapshot dataSnapshot) {
        }
    
        @Override
        public void onChildMoved(DataSnapshot dataSnapshot, String s) {
        }
    
        @Override
        public void onCancelled(DatabaseError databaseError) {
        }
    });
    
  • 1

    如果您没有模型类,则只需使用String类即可 . 因此,要获取所有孩子的数据,请使用以下代码:

    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    DatabaseReference demografiRef = rootRef.child("demografi");
    ValueEventListener valueEventListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for(DataSnapshot ds : dataSnapshot.getChildren()) {
                String nama = ds.child("nama").getValue(String.class);
                Log.d("TAG", nama);
            }
            Log.d("TAG", String.valueOf(dataSnapshot.getChildrenCount()));
        }
    
        @Override
        public void onCancelled(DatabaseError databaseError) {}
    };
    demografiRef.addListenerForSingleValueEvent(valueEventListener);
    

    logcat中的输出将是所有用户的所有名称 . 如您所见,还有第二个日志语句,它将打印您孩子的总数 .

相关问题