猿问

仅当前一个对象完成时,如何从 Firebase 获取对象?

我有一个列表,其中充满了用户 ID,如下所示:


List<String> userIds = new ArrayList<>();

现在我想遍历这个列表并从 Firebase 数据库中获取所有相应的用户对象。这是我的代码:


for (String uid : userIds) {

    usersRef.child(uid).addListenerForSingleValueEvent(new ValueEventListener() {

        @Override

        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

            User user = dataSnapshot.getValue(User.class);


            //Create another listener?

        }


        @Override

        public void onCancelled(@NonNull DatabaseError databaseError) {}

    });

}

我知道我可以使用嵌套侦听器,但我不能这样做,因为我的列表有超过 1000 个 uid。


仅当前一个用户对象完成时,如何才能获取下一个用户对象?我从他在这篇文章中的回答中关注了 Frank van Puffelen 的评论,但我无法完成这项任务。谢谢!!!


HUH函数
浏览 162回答 1
1回答

回首忆惘然

要按顺序加载它们,只需从列表中删除您获得的 ID。像这样的东西:public void getNextUser() {&nbsp; if (list.size() > 0) {&nbsp; &nbsp; String uid = list.get(0)&nbsp; &nbsp; list.remove(0);&nbsp; &nbsp; usersRef.child(uid).addListenerForSingleValueEvent(new ValueEventListener() {&nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; public void onDataChange(@NonNull DataSnapshot dataSnapshot) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; User user = dataSnapshot.getValue(User.class);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; getNextUser()&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; public void onCancelled(@NonNull DatabaseError databaseError) { throw databaseError.toException(); }&nbsp; &nbsp; });&nbsp; }}然后开始:getNextUser();
随时随地看视频慕课网APP

相关分类

Java
我要回答