Kind of hard to explain. Basically, I have a a list called data, and I need to add to that list. This is the code I use to do that...
public static List<WorldBrowseData> getData() {
data = new ArrayList<>();
ref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot children : dataSnapshot.getChildren()) {
WorldBrowseData current = new WorldBrowseData();
Log.v("CHILDREN",children.toString());
current.image = children.child("image_url").getValue().toString();
//Log.v("IMAGE",current.image);
data.add(current);
Log.v("DATA IN METHOD",data.toString());
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
Log.v("DATA IS",data.toString());
return data;
}
When I log "DATA IN METHOD", it returns the updated, correct list. But when I log (and return) "DATA IS", it's just an empty list.
Also, it logs "DATA IS" before it logs "DATA IN METHOD", so basically, it gets called, returns data, then updates data, when I need it to update then return.
What am I doing wrong?