该
get()操作返回a
Task<>,这意味着它是一个 异步操作
。调用
getListItems()仅启动操作,它不等待操作完成,因此您必须添加成功和失败侦听器。
尽管您无法对操作的异步性质做很多事情,但是可以按照以下方式简化代码:
private void getListItems() { mFirebaseFirestore.collection("some collection").get() .addonSuccessListener(new OnSuccessListener<QuerySnapshot>() { @Override public void onSuccess(QuerySnapshot documentSnapshots) { if (documentSnapshots.isEmpty()) { Log.d(TAG, "onSuccess: LIST EMPTY"); return; } else { // Convert the whole Query Snapshot to a list // of objects directly! No need to fetch each // document. List<Type> types = documentSnapshots.toObjects(Type.class); // Add all to your list mArrayList.addAll(types); Log.d(TAG, "onSuccess: " + mArrayList); } }) .addonFailureListener(new onFailureListener() { @Override public void onFailure(@NonNull Exception e) { Toast.makeText(getApplicationContext(), "Error getting data!!!", Toast.LENGTH_LONG).show(); } });}


