Ma structure de base de données Firestore:
|
|=>root_collection
|
|=>doc1
|
|=>collection
|
|=>doc2
|
|=>collection
|
|=>doc3
|
|=>collection
Maintenant, je veux obtenir la liste des documents de root_collection
. Il y aurait une liste avec les données suivantes {"doc1", "doc2", "doc3"}
. J'en ai besoin parce que je veux faire un spinner et mettre ces données dans le spinner. Ensuite, un utilisateur choisirait un document et le téléchargerait.
J'essaie d'utiliser le code ci-dessous:
firestore.collection("root_collection")
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
Log.d(TAG,document.getId() + " => " + document.getData());
}
} else {
Log.d(TAG, "Error getting documents: ", task.getException());
}
}
});
Mais le code fonctionne seulement alors j'ai une structure de données sans collections dans les documents. Dans les autres cas, il n'y a aucun document dans QueryDocumentSnapshot
.
Merci!
Pour avoir une liste qui contient tout le nom de vos documents dans le root_collection
, veuillez utiliser le code suivant:
firestore.collection("root_collection").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
List<String> list = new ArrayList<>();
for (QueryDocumentSnapshot document : task.getResult()) {
list.add(document.getId());
}
Log.d(TAG, list.toString());
} else {
Log.d(TAG, "Error getting documents: ", task.getException());
}
}
});
Le résultat dans votre logcat sera:
[doc1, doc2, doc3]
N'oubliez pas que ce code ne fonctionnera que si vous aurez des propriétés dans ces documents, sinon vous finirez avec une liste vide.