Cześć!
Dzisiaj przychodzę do Was z takim jednym gorącym pytaniem - aktualnie tworzę aplikację pod Androida współpracującą z firestore i zaimplementowałem klasę sprawdzającą typ konta. Wszystko działa poprawnie, jednakże chciałbym teraz pobrać wartość "typeOfAcc" z tej klasy w innej klasie, ponieważ będzie to ścieżka do mojego dokumentu w bazie, jednakże jest jeden warunek - ścieżka musi się pobierać dopiero wtedy, kiedy zostaną pobrane dane z bazy i na ich podstawie zostanie ustalone, czy należy zmienić typ konta na "Trenerzy". Ma ktoś jakiś pomysł? Wszystkie moje dotychczasowe próby kończyły się na tym, że po prostu druga klasa pobiera tego stringa, przed zmianą jego wartości, czego wynikiem jest brak dostępu do danych. Sprawdzając po logach, wszystko jest okej, wartość się zmienia, ale niestety po pobraniu wartości. Z góry dzięki za pomoc!
public class UserValid
{
String typeOfAcc = "Podopieczni";
FirebaseFirestore fStore;
FirebaseAuth fAuth;
DocumentReference documentReference;
List itemList = new ArrayList<>();
String userID;
public UserValid()
{
Log.d("TAG", "Błąd, wybrano konstruktor bez argumentów");
}
//Metoda sprawdzająca jaki typ konta jest aktualnie obsługiwany
// Jeśli wartość true - konto podopiecznego, wartość false - konto trenera;
public UserValid(FirebaseAuth fAuth, FirebaseFirestore fStore)
{
userID = fAuth.getCurrentUser().getUid();
this.fAuth = fAuth;
this.fStore = fStore;
documentReference = fStore.collection("Podopieczni").document(userID);
readData(new FirestoreCallback()
{
@Override
public void onCallback(List<String> list)
{
if(itemList.get(0) == null)
{
typeOfAcc="Trenerzy";
Log.d("TAG", itemList.toString());
}
}
});
}
private void readData(FirestoreCallback firestoreCallback)
{
//DocumentReference docRef = db.collection("cities").document("SF");
documentReference.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful())
{
//for(DocumentSnapshot document : task.getResult()) {
String itemName = task.getResult().getString("Imie");
itemList.add(itemName);
// }
firestoreCallback.onCallback(itemList);
}
}
});
}
private interface FirestoreCallback
{
void onCallback(List<String> list);
}
}