Я пытаюсь присвоить количеству документов значение под firebase firestore
.Я назначаю переменную я.Но в logcat
это дает мне правильное значение, но когда я присваиваю переменную i и использую ее ниже, она все равно дает value 0
.
ниже - код
public class FirestoreNew extends AppCompatActivity {
FirebaseAuth mAuth;
FirebaseFirestore mfirebasefs = FirebaseFirestore.getInstance();
DocumentReference AllUserInfo_doc, AllTicketData_doc, AllPassesData_doc;
CollectionReference UserData, TicketData, PassData;
int i = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_firestore_new);
//Auth Purpose
mAuth = FirebaseAuth.getInstance();
//Document Reference
AllUserInfo_doc = mfirebasefs.collection(mAuth.getCurrentUser().getEmail())
.document("AllUserData");
AllTicketData_doc = mfirebasefs.collection(mAuth.getCurrentUser().getEmail())
.document("AllTicketsData");
AllPassesData_doc = mfirebasefs.collection(mAuth.getCurrentUser().getEmail())
.document("AllPassesData");
//Collection Reference
UserData = AllUserInfo_doc.collection("UserDataCollection");
TicketData = AllTicketData_doc.collection("TicketsList");
PassData = AllPassesData_doc.collection("PassesList");
TicketData.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
Log.d("TAG", task.getResult().size() + "");
i = task.getResult().size();
} else {
Log.d("TAG", "Error getting documents: ", task.getException());
}
}
});
i = i + 1;
String s = "Ticket" + i;
Toast.makeText(getApplicationContext(),s,Toast.LENGTH_LONG).show();
//Documents
DocumentReference myTicket = TicketData.document(s);
Map<String, Object> map1 = new HashMap<>();
map1.put("Ticket Number", "TEST123");
map1.put("FROM","FROM PLACE");
myTicket.set(map1);
}
}
Нужна помощь в получении правильного значения i.
Мой текущий альтернативный обходной код, я выполняю операции внутри onCompleteListener.Однако я чувствую, что это не лучшее решение
TicketData.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
Log.d("TAG", task.getResult().size() + "");
i = task.getResult().size();
///////////////
i = i + 1;
String s = "Ticket" + i;
// Toast.makeText(getApplicationContext(),s,Toast.LENGTH_LONG).show();
//Documents
DocumentReference myTicket = TicketData.document("Ticket" + i);
Map<String, Object> map1 = new HashMap<>();
map1.put("Ticket Number", "TEST123");
map1.put("FROM","FROM PLACE");
myTicket.set(map1);
//////////////
} else {
Log.d("TAG", "Error getting documents: ", task.getException());
}
}
});