У меня есть 2 проблемы:
Первая:
Я хочу вызвать doSomethingOnce()
при удалении всего объекта, но мне нужно, чтобы он вызывался только один раз, поэтому //Position1
это не место для вызова, потому что оно в цикле, поэтому его будут вызывать несколько раз.//Position2
тоже не работает, потому что из того, что я понял и протестировал с логами, он вызывается перед завершением удаления.Как вызвать функцию, когда все удаление завершено?
Второй:
Удаление нескольких документов на самом деле не работает таким образом..delete()
выполняется максимум 3 раза в цикле, поэтому, когда у меня, скажем, 15 документов, мне нужно вызвать этот цикл for(String id : Ids)
с удалением 5 раз.Как я могу удалить больше, чем эти 3 документа?
FirebaseFirestore.getInstance().collection("test")
.whereEqualTo("userID", user.getUid())
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if(task.isSuccessful()){
if(task.getResult().size() > 0) {
List<String> Ids = new ArrayList<>();
for(QueryDocumentSnapshot documentSnapshot : task.getResult()) {
Ids.add(documentSnapshot.getId());
}
for(String id : Ids) {
FirebaseFirestore.getInstance().collection("test").document(id).delete().addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
//Position1
Toast.makeText(SettingsActivity.this, "Deleted", Toast.LENGTH_SHORT).show();
}
});
}
//Position2
} else {
Toast.makeText(SettingsActivity.this, "Nothing found", Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(SettingsActivity.this, "Something went wrong", Toast.LENGTH_SHORT).show();
}
}
});