我正在開發 android 應用程式,我正在嘗試從 firestore 讀取資料。其中一個鍵包含我想要讀取的更多物件資料。我能夠讀取購買資料,但購買有更多包含產品鍵的陣列資料。我無法閱讀。我想要一個簡單的解決方案,請不要實作類!
docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document.exists()) {
Map<String, Object> data = (Map<String, Object>) document.getData().get("path");
Set<String> keys = data.keySet();
for (String s : keys) {
if (Objects.equals(s, "purchases")) {
Log.d(TAG, "onComplete: " data.get(s));
}
}
} else {
Log.d(TAG, "No such document");
}
} else {
Log.d(TAG, "get failed with ", task.getException());
}
}
});

這里 purchase 是一個陣列,每個陣列元素都有進一步的資料,其中包含 products key 。并且產品進一步嵌套到物件中。我想做一個 llop 來讀取產品的資料。
謝謝
uj5u.com熱心網友回復:
我應該只使用資料類實作,非常簡單。
創建幾個與 Firebase 呼叫結果匹配的類:
class Purchases {
public List<Purchase> purchases;
public Purchases(List<Purchase> purchases) {
this.purchases = purchases;
}
}
class Purchase {
public String id;
public Double price;
public List<Product> products;
public Purchase(String id, Double price, List<Product> products) {
this.id = id;
this.price = price;
this.products = products;
}
}
class Product {
public String addedOn;
// More values
public Product(String addedOn) {
this.addedOn = addedOn;
// Add those values to the constructor too
}
}
然后你應該可以使用toObject()
docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document.exists()) {
document.toObject(Purchases::class.java) // to Object here
}
}
}
}
所以你只需要創建一些簡單地保存資料的類。你可以在這里閱讀更多。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/496533.html
上一篇:將復選框值保存到firebase
