Я пытаюсь прочитать значения из вложенных объектов вместе с ключами в Android, но я не могу найти какое-либо решение в соответствии с моим требованием. (Я новичок в разработке Firestore и Android)
Я пробовал цикл foreach, но он показывает ошибку - foreach не применим к типу 'java.util.Map': -
for(DocumentSnapshot ds: document.getData())
Итак, я попробовал это: -
Map<String, Object> myMap = (Map<String, Object>) document.getData();
String name = ""; //don't know how to get key i.e(clamp,gear) as i can't pass all of them.
String url = (String) myMap.get("url");//url returns null
Это мой код: -
FirebaseFirestore db = FirebaseFirestore.getInstance();
DocumentReference docRef = db.collection("categoryType").document("Hardware");
docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document.exists()) {
Log.d(TAG, "DocumentSnapshot data: " + document.getData());//see log below
Map<String, Object> myMap = (Map<String, Object>) document.getData();
String name = "";
String url = (String) myMap.get("url");
ItemCategory category = new ItemCategory(name,url);
itemCategoryList.add(category);
} else {
Log.d(TAG, "No such document");
}
} else {
Log.d(TAG, "get failed with ", task.getException());
}
itemCategoryAdapter.notifyDataSetChanged();
}
});
Log.d печатает это: -
{Hammer={url=https://someURL}, Nail={url=https://someURL}, Shovel={url=https://someURL}}
Короче говоря, я хочу: -
name = "Hammer"
url = "someUrl",
name = "Nail"
url = "someurl"