данные в облачном хранилище не хранятся

#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, она не загружаетсяон отображается так с 2 часов

Ответ №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);
}