将异步数据库回调与同步操作混合的正确过程?

时间:2018-12-19 13:32:50

标签: android firebase

我想创建一个ArrayList,其中包含通过调用数据库找到的所有用户ID。 这是我目前的操作方式:

@Override
public void onDataChange(DataSnapshot dataSnapshot) {
    for(DataSnapshot ds : dataSnapshot.getChildren()) {
         userId= ds.getKey();
         users.add(userId); // adding each user to the ArrayList called users
    }
}

到目前为止,我将每个用户添加到arraylist中。但是现在我需要在回调之外对该arraylist进行操作。但是,在该范围之外不可见,这是有道理的,因为它是异步的,您无法确定它何时完成。那么最好的方法是什么?例如,如果它不在侦听器之外,我什至无法执行最简单的操作,例如输出id:

int listSize = users.size();
for (int i = 0; i<listSize; i++){
    Log.d("tag: ", users.get(i));
    }
}

如果以上代码不在onDataChange内,则无法调用它。在侦听器外部使用数组列表并确保已完成的正确方法是什么?还是我必须在每个ID里面都做?

0 个答案:

没有答案