I have multiple references to different Firebase database locations and i need to collect this data before proceeding with the code. What is the best way to achieve this? Thanks.
Method to collect Firebase data:
public void getDatafirebase(){
DatabaseReference ref = ConfigFirebase.getFirebaseDatabase().child("trip").child(idTrip);
DatabaseReference data1Ref = ref.child("dataTravelers");
DatabaseReference data2Ref = ref.child("dataCountries");
//RETRIEVE FIRST DATA
//===================
data1Ref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot travelers: dataSnapshot.getChildren()) {
DataTravelers dataTravelers = travelers.getValue(DataTravelers.class); //Class model
listTravelers.add(dataTravelers);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
throw databaseError.toException();
}
});
//RETRIEVE SECOND DATA
//====================
dataRef2.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot countries: dataSnapshot.getChildren()) {
DataCountries dataCountries = countries.getValue(DataCountries.class); //Class model
listContries.add(dataCountries);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
throw databaseError.toException();
}
});
}
Method OnCreate:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_trip);
getDatafirebase(); //Getting data from Firebase.
//wait for Firebase data and run code.
//...
//Code
//...
}