Reputation: 199
I have a DialogFragment and would like to store data from a specific position from Firebase Database in an ArrayList (variable arrList). I set a value event listener and receive data as DataSnaphsot (I don't want to use REST) in my onStart() method:
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot data : dataSnapshot.getChildren()){
Log.d("onDataChange", data.getValue().toString());
arrList.add(data.getValue().toString());
}
}
Log.d("onStart", arrList.toString());
I also have two Log.d's which should print the content of ArrayList:
one in onStart() (see above) one in onDetach()
@Override
public void onDetach() {
super.onDetach();
Log.d("onDetach", arrList.toString());
}
Results:
D/onStart: []
D/onDataChange: name
D/onDataChange: surname
...
D/onDetach: [name, surname, ...]
How to fill the ArrayList so that it is available in onStart() ?
Upvotes: 0
Views: 783
Reputation: 1412
Th listener methods of firebase runs asynchronously try putting your log of onStart inside onDataChange method like this
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot data : dataSnapshot.getChildren()){
Log.d("onDataChange", data.getValue().toString());
arrList.add(data.getValue().toString());
}
Log.d("onStart", arrList.toString());
}
Upvotes: 1