私のコレクションがFirestoreデータベースに存在するかどうかをチェックするのに問題があります。 私は私が使用している可能性がFirebaseリアルタイムデータベースで働いていた時:Cloud Firestoreコレクションが存在するかどうかを確認する方法は? (querysnapshot)
if(databaseSnapshot.exists)
を今Firestoreと私は同じことをしたいです。 私はすでに試しました
if (documentSnapshots.size() < 0)
しかし、動作しません。
public void pullShopItemsFromDatabase() {
mShopItemsRef.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (DocumentSnapshot document : task.getResult()) {
ShopItem shopItem = document.toObject(ShopItem.class);
shopItems.add(new ShopItem(shopItem.getImageUrl(), shopItem.getTitle(), shopItem.getSummary(), shopItem.getPowerLinkID(), shopItem.getlinkToShopItem(),shopItem.getLinkToFastPurchase(), shopItem.getKey(), shopItem.getPrice(),shopItem.getVideoID()));
}
if (shopItems != null) {
Collections.sort(shopItems);
initShopItemsRecyclerView();
}
} else {
Log.w(TAG, "Error getting documents.", task.getException());
setNothingToShow();
}
}
});
}
関数:ここ 現在のコードであるsetNothingToShow(); コレクションが空である/存在しない場合、実際に実行したいものです。 お知らせください!あなたがTask<QuerySnapshot>
の外にQuerySnapshot
を取得するためQuerySnapshot
コールtask.resultを扱っている間 おかげで、 D.
'if(documentSnapshots.size()<0)'は決してtrueになりません。 if(documentSnapshots.size()== 0) 'または' if(documentSnapshots.size()> 0) '(置く場所によって異なります)。 –
@FrankvanPuffelen OK!私は何が起こったのか分からないが、今はうまくいった。 私はそれ以前に試したことがありません。どうもありがとう!しかし、このケースは私がonSuccessで作業している間に動作します。私は "for"ループを作成したいので、onCompleteで前に作業していました。元の投稿でやったように、onSuccessでも使えますか? – WhiteNinja
タスクが完了し成功したときに 'onSuccess'が起動します。どんなデータもロードする必要がないので、データをロードせずに完了するタスクも成功しました。だから 'onSuccess'もそこで動作します。 –