Hallo,
Wie oben im Titel schon steht führt Java mir den Code falschrum aus...
Was passiert:
Man wählt aus einer Liste mehrere Teilnehmer aus -> addUserstoList() wird aufgerufen und die IDs der gewählten Teilnehmer werden übergeben.
Im nächsten Schritt soll aus einer Datenbank der Name geholt werden und in eine andere Liste hinzugefügt werden.
//Ausgewählte Benutzer in Liste einfügen
public void addUserstoList(final List<String> usersid){
//Datenbank Reference herstellen
DatabaseReference UserRef = FirebaseDatabase.getInstance().getReference();
UserRef.keepSynced(true);
//Teilnehmerliste erstellen <vorname+nachname>
final List<String> users = new ArrayList<>();
//Für jeden ausgewählten Benutzer Vor und Nachname in users abspeichern
for(String i:usersid){
UserRef.child("users").child(i).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//Wenn auf Datenbank zugegriffen werden kann:
StringBuffer buffer = new StringBuffer();
buffer.append(dataSnapshot.child("Vorname").getValue().toString()+ " ");
buffer.append(dataSnapshot.child("Nachname").getValue().toString());
users.add(buffer.toString());
System.out.println("test1"+" "+ users);
}
@Override
public void onCancelled(DatabaseError databaseError) {
//Wenn ein Fehler auftritt:
}
});
}
System.out.println("test2"+" "+ users);
//User Liste eintragen
ListView list = findViewById(R.id.rangliste);
list.setAdapter(new MyListAdapter(this, R.layout.regatta_items, users, usersid));
}
Alles anzeigen
Wenn ich das jetzt so ausführe zeigt es mir im Logcat erst mein test2 an allerdings ist die Liste leer.
Danach Zeigt es mir die Teilnehmer, also nachdem es die Liste ja schon erstellt hat.
System.out: test2 []
System.out: test1 [max muster]
System.out: test1 [max muster, test test]
System.out: test1 [max muster, test test, vorname nachname]
Woran Liegt das? Und wie kann ich Java sagen das es erst die Teilnehmer in die Liste einfügt und es dann erst angezeigt wird?
Wenn irgendwas fehlt einfach fragen