且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

firestore读取是异步的,我想要同步行为

更新时间:2023-10-30 21:28:46

您可以进行自己的回调.为此,请创建一个界面

You can make your own callback. For this, make an interface

public interface FireStoreResults {
    public void onResultGet();
}

现在,当您获得结果时,请发送此呼叫

now send this call back when you get results

public void readData(final FireStoreResults){
    db.collection("users").document(user_id).collection("quizzes")
    .get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
            @Override
            public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
                for (QueryDocumentSnapshot document : task.getResult()) {
                     Quiz quizDownloaded = getQuizFromCloud(document.getId());
                     quizzes.add(quizDownloaded);
                 }
                results.onResultGet();
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                results.onResultGet();
            }
        });   
}

现在您的活动或片段

new YourResultGetClass().readData(new FireStoreResults(){
             @Override
             public void onResultGet() {
                    new YourResultGetClass().getQuizzes(); //this is your list of quizzes
                    //do whatever you want with it
            }

希望这很有道理!