0

Meine Datenbank so strukturiert ist, dass ich ein Benutzer Sammlung Dokumente mit Benutzer gefüllt haben, die jeweils ein Feld aufweist, die ein Array von DocumentReferences ist, die auf derselben in einer Sammlung vorhanden Ebene wie die Benutzer Sammlung.Firestore: Abfrage Array von Document des aufzufüllen Recyclerview

Ich muss diese Daten abrufen und füllen Sie einen RecyclerView nach Abschluss der Abfragen. Derzeit ist mein Dilemma, dass ich über jede DocumentReference iterieren und nur meine RecyclerView initialisieren muss, wenn die letzte onSuccessListener ausgeführt wird. Gibt es eine zuverlässige Möglichkeit, dies in Firestore zu tun?

Antwort

0

Sie können immer noch initialisieren Ihre RecyclerView vor onSuccessListener und rufen Sie einfach notifyDataSetChanged() nach der Zugabe item

Um Daten aus einer Collection füllen wir eine for each Schleife verwenden, können durch die Documents

CollectionReference ref = FirebaseFirestore.getInstance().collection(USERS); 


ref.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() { 
       @Override 
       public void onComplete(@NonNull Task<QuerySnapshot>task){ 
         if (task.isSuccessful()) { 
         for(DocumentSnapshot document : task.getResult()){ 
          //query here 
          item.add(document); 
          adapter.notifyDataSetChanged(); 
         } 
         } else { 
         //fail getMessage 
         } 
       } 
      }); 
iterieren
+0

Danke für die Antwort @gege. Ich kenne 'notifyDataSetChanged() '. Das sieht jedoch nicht optisch ansprechend aus, da die Daten eingeblendet werden. Das bedeutet, dass Daten, die angezeigt werden sollten, x Sekunden dauern können. Ich möchte alle laden, bevor ich versuche, den Recycler zu sehen –

Verwandte Themen