Я пытаюсь сохранить новый элемент в предыдущем из Firestore, скачанном ArrayList>.Процесс загрузки работает, но после редактирования списка я не могу загрузить его снова, потому что Firestore говорит, что это должна быть карта.Поэтому я попытался использовать Map<String, Object> listValue = new HashMap<>();
listValue.put("shoppingLists", Arrays.asList(shoppingLists));
Проблема в том, что если я использую этот код, он говорит, что вложенные массивы не поддерживаются.Вот полный код:
private void addNewDataToList(int i, ArrayList<HashMap<String, Object>> shoppingLists, SellerObject soa) {
String userid = FirebaseAuth.getInstance().getCurrentUser().getUid();
ArrayList<HashMap<String, Object>> products = (ArrayList<HashMap<String, Object>>) shoppingLists.get(i).get("products");
String title = (String) shoppingLists.get(i).get("listname");
HashMap<String, Object> newProduct = new HashMap<>();
newProduct.put("sellerId", soa.getId());
newProduct.put("productId", productId);
products.add(newProduct);
HashMap<String, Object> newListObject = new HashMap<>();
newListObject.put("listname", title);
newListObject.put("products", products);
shoppingLists.set(i, newListObject);
ArrayList<ShoppingListObject> finalList = new ArrayList<>();
Map<String, Object> listValue = new HashMap<>();
listValue.put("shoppingLists", Arrays.asList(shoppingLists));
db.collection("Users").document(userid)
.set(listValue, SetOptions.merge())
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
}
});
}