Firebase:dataSnapshot循环仅执行一次

以下是我的 Firebase数据库图:

Firebase:dataSnapshot循环仅执行一次

根元素链接中有三个个子级。当我执行以下循环以获取所有子代时,它仅返回第一个子代的结果

        FirebaseDatabase database = FirebaseDatabase.getInstance();
        DatabaseReference ref = database.getReference("links");
        int count=0;


        ref.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(Datasnapshot datasnapshot) {


            Log.d("Firebase","Children: "+datasnapshot.getchildren().toString());    //This gives result for all children

                for (Datasnapshot ds : datasnapshot.getchildren()) {

                    count++;
                }
                Log.d("Firebase","Count length: "+count);     //Gives only "1"
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                System.out.println("The read failed: " + databaseError.getcode());
            }
        });

在上面的代码中,count应该为3,但返回1。循环仅执行一次。 但是上面代码中的以下行可以正常工作,并给出所有3个子级的结果。

Log.d("Firebase","Children: "+datasnapshot.getchildren().toString());

问题出在哪里?感谢您的回答!

applesseed 回答:Firebase:dataSnapshot循环仅执行一次

如果要获取links以下的孩子数,请尝试以下操作:

ref.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        Log.d("Firebase","Children: "+dataSnapshot.getChildren().toString()); //This gives result for all children
        long childCount = dataSnapshot.getChildrenCount();
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
        System.out.println("The read failed: " + databaseError.getCode());
    }
});

getChildrenCount()将返回links下的直系子代数,在这种情况下为3

本文链接:https://www.f2er.com/3169038.html

大家都在问