public class DataService {
private static DataService ourInstance = new DataService();
private DatabaseReference mDatabase;
public static DataService getInstance() {
return ourInstance;
}
public ArrayList<UserDatabase> getFriendList() {
mDatabase = FirebaseDatabase.getInstance().getReference().child("users");
final ArrayList<UserDatabase> list = new ArrayList<>();
mDatabase.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
UserDatabase userDatabase = dataSnapshot.getValue(UserDatabase.class);
list.add(userDatabase);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {}
@Override
public void onCancelled(DatabaseError databaseError) {}
});
return list;
}
}
aktualisieren
Ich versuche, meine Benutzerdatenbank aus dem Knoten users
abzurufen. Es verhält sich wirklich komisch. Wenn ich einen Haltepunkt an der Funktion onChildAdded
einstelle, ruft es alle Benutzer ab und fügt sie der Liste hinzu.ArrayList nicht innerhalb onChildAdded Funktion
Allerdings, wenn ich dort keinen Haltepunkt setze, bekommt es nichts und die Listengröße ist 0. Hat jemand eine Idee was los ist? Danke im Voraus!
Aber dann wird es vielleicht wieder und überschrieben genannt zu werden. Kannst du 'list' nicht als Feld verwenden? –
ich glaube nicht, dass es überschrieben wird. Wenn ich einen Haltepunkt einfüge, gibt er in der Rückkehrliste nach dem gesamten Prozess die richtigen Daten zurück. aber wenn nicht, geht es einfach nicht an die onChildAdded Funktion –
Ich bin nicht wirklich vertraut mit Android/Firebase, aber wann heißt der Listener? –