【发布时间】:2018-06-11 02:49:00
【问题描述】:
我无法检查我的收藏是否存在于 Firestore 数据库中。 当我使用 Firebase 实时数据库时,我可以使用:
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(); 如果我的收藏为空/不存在,这实际上是我想要执行的。 请指教! 谢谢, D.
【问题讨论】:
-
if (documentSnapshots.size() < 0)永远不会是真的。它应该是if (documentSnapshots.size() == 0)或if (documentSnapshots.size() > 0)(取决于你把它放在哪里)。 -
@FrankvanPuffelen 好的!我不知道发生了什么,但现在它起作用了。我以前尝试过
-
onSuccess在任务完成并成功时触发。一个没有加载任何数据就完成的任务,因为它不需要加载任何数据,也成功了。所以onSuccess也可以在那里工作。 -
@FrankvanPuffelen 再次感谢。我看过云Firestore的介绍视频,他在“新”关键字之前的“OnSuccess”上使用“this”监听器。所有这些都在 onStart 上实现自动刷新内容。在片段上使用此方法时,我注意到它可能会破坏片段事务,我假设因为它与几个 onStart 方法发生冲突(因为每个片段都实现它)有什么建议可以避免它吗?
-
我对事务生命周期不太熟悉,所以帮不上忙。
标签: java android database firebase google-cloud-firestore