Firestoreデータベースの私の構造:
|
|=>root_collection
|
|=>doc1
|
|=>collection
|
|=>doc2
|
|=>collection
|
|=>doc3
|
|=>collection
ここで、root_collection
からドキュメントのリストを取得します。次のデータ{"doc1", "doc2", "doc3"}
のリストがあります。スピナーを作成し、これらのデータをスピナーに入れたいので、それが必要です。その後、ユーザーはドキュメントを選択してダウンロードします。
私は以下のコードを使用しようとします:
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());
}
}
});
しかし、コードが機能するのは、ドキュメントにコレクションが含まれていないデータの構造がある場合のみです。それ以外の場合は、QueryDocumentSnapshot
にドキュメントがありません。
ありがとう!
root_collection
内にドキュメントのすべての名前を含むリストを作成するには、次のコードを使用してください。
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());
}
}
});
Logcatの結果は次のようになります。
[doc1, doc2, doc3]
このコードは、それらのドキュメント内にいくつかのプロパティがある場合にのみ機能します。そうでない場合は、空のリストで終了します。