我使用FirebaseFirestore对nosql数据库,我有一个专用的java类来执行所有的防火墙读写和删除查询。
我面临的问题是,在从Firestore中获取用户数据并将其存储在数组列表中时。在数组列表中更新所有用户之后,我将返回该列表来更新UI。但是我下面的功能是返回空列表,然后firebase查询将数据更新到列表中。
public List<Users> getAllUsers() {
return loadAllUserData();
}
private List<Users> loadAllUserData() {
List<Users> usersList = new ArrayList<>();
mFirebaseFirestore.collection(USER_DATA).get()
.addOnSuccessListener(queryDocumentSnapshots -> {
List<DocumentSnapshot> docSnap =
queryDocumentSnapshots.getDocuments();
for (DocumentSnapshot docs : docSnap) {
Users user = docs.toObject(Users.class);
usersList.add(user);
Log.d(TAG, "onSuccess: loaded Users : " + usersList.size());
}
});
Log.d(TAG, "loadAllUserData: Returning users : " + usersList.size());
return usersList;
}日志
2022-09-01 23:13:38.786 /com.app D/Repository:存储库:调用
2022-09-01 23:13:38.787 /com.app D/Repository:存储库:调用
2022-09-01 23:13:38.787 /com.app D/Repository: loadAllUserData:返回用户:0
2022-09-01 23:13:38.962 /com.app D/Repository: onSuccess: loaded :1
2022-09-01 23:13:38.962 /com.app D/Repository: onSuccess: loaded :2
2022-09-01 23:13:38.962 /com.app D/Repository: onSuccess: loaded :3
2022-09-01 23:13:38.963 /com.app D/Repository: onSuccess: loaded :4
发布于 2022-09-01 20:22:00
get()操作是一个异步操作。因此,返回将在addOnSuccessListener之前执行。
https://stackoverflow.com/questions/73573758
复制相似问题