gpt4 book ai didi

java - Firebase:dataSnapshot 上的循环仅执行一次

转载 作者:行者123 更新时间:2023-11-30 05:25:37 26 4
gpt4 key购买 nike

以下是我的 Firebase 数据库图表:

enter image description here

根元素links三个子元素。当我执行以下循环来获取所有子项时,它仅返回第一个子项的结果

        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());

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

最佳答案

如果您想获取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

关于java - Firebase:dataSnapshot 上的循环仅执行一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58687384/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com