#android #android-studio #google-cloud-firestore
#Android #android-studio #google-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();
}
});
}
и моя бумажная активность
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();
}
});
когда я изначально определяю данные, они работают, но когда я подключаюсь к базе данных firestore, она не загружается
Ответ №1:
Вам не хватает вызова 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);
}