android - Cloud Firestore 数据未加载
问题描述
我的 DbQuery 类中有一个数据库
public static void loadPaperData(MyCompletelistener completelistener){
g_paperList.clear();
g_firestore.collection("SCHOOL").document(g_boardList.get(g_selected_board_index).getDocID()).collection("PAPER_LIST").document("PAPER_INFO"
).get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
int NoOfPaper = g_boardList.get(g_selected_board_index).getNoOfPaper();
for (int i=1; i<=NoOfPaper; i++){
g_paperList.add(new PaperModel(documentSnapshot.getString("PAPER"+ String.valueOf(i)+"_ID"),documentSnapshot.getString("PAPER"+String
.valueOf(i)+"_URL")));
}
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
completelistener.onFailure();
}
});
}
我的 PaperActivity 是
DbQuery.loadPaperData(new MyCompletelistener() {
@Override
public void onSuccess() {
adapter = new paperAdapter(DbQuery.g_paperList);
paperView.setAdapter(adapter);
progress_Dialog.dismiss();
}
@Override
public void onFailure() {
Toast.makeText(PaperActivity.this,"Something Went Wrong ! please Try Again Later !",Toast.LENGTH_SHORT).show();
progress_Dialog.dismiss();
}
});
解决方案
completelistener.OnSuccess()
下载数据后,您缺少调用。
public static void loadPaperData(MyCompletelistener completelistener){
g_paperList.clear();
g_firestore.collection("SCHOOL").document(g_boardList.get(g_selected_board_index).getDocID()).collection("PAPER_LIST").document("PAPER_INFO"
).get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
int NoOfPaper = g_boardList.get(g_selected_board_index).getNoOfPaper();
for (int i=1; i<=NoOfPaper; i++){
g_paperList.add(new PaperModel(documentSnapshot.getString("PAPER"+ String.valueOf(i)+"_ID"),documentSnapshot.getString("PAPER"+String
.valueOf(i)+"_URL")));
}
completelistener.onSuccess();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
completelistener.onFailure();
}
});
}
顺便说一句,我建议您通过接口回调发送数据,而不是使用公共 ArrayList,例如,使用此接口:
public interface CompleteListener {
void onSuccess(ArrayList<PaperModel> paperModelList);
void onFailure(Exception e);
}
推荐阅读
- formatting - Tmux pad 格式字符串
- python - 带有 finditer 的 Python 多行正则表达式组仅返回最后一个匹配项
- c# - Unity 键盘控制(按下 C# 脚本中的一个键)
- javascript - 有没有办法在单击对象之前将 window.onbeforeunload 设置为 null?
- javascript - 如何从 Node.js 包调用函数导入
- javascript - 如何在 React 原生 ScrollView 轮播上播放特定视频?
- c - 通过引用传递字符串变量
- html - 有没有办法使用 iframe 将翻书嵌入到网站中,以在桌面上以一种尺寸显示,而在移动设备上以不同尺寸显示?
- php - WordPress 调试 - call_user_func_array() 期望参数 1 是有效的回调
- c# - 如何在方法中获得计算(增量)的结果?