Java führt Code in falscher Reihenfolge aus

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Java führt Code in falscher Reihenfolge aus

    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.


    Java-Quellcode

    1. //Ausgewählte Benutzer in Liste einfügen
    2. public void addUserstoList(final List<String> usersid){
    3. //Datenbank Reference herstellen
    4. DatabaseReference UserRef = FirebaseDatabase.getInstance().getReference();
    5. UserRef.keepSynced(true);
    6. //Teilnehmerliste erstellen <vorname+nachname>
    7. final List<String> users = new ArrayList<>();
    8. //Für jeden ausgewählten Benutzer Vor und Nachname in users abspeichern
    9. for(String i:usersid){
    10. UserRef.child("users").child(i).addListenerForSingleValueEvent(new ValueEventListener() {
    11. @Override
    12. public void onDataChange(DataSnapshot dataSnapshot) {
    13. //Wenn auf Datenbank zugegriffen werden kann:
    14. StringBuffer buffer = new StringBuffer();
    15. buffer.append(dataSnapshot.child("Vorname").getValue().toString()+ " ");
    16. buffer.append(dataSnapshot.child("Nachname").getValue().toString());
    17. users.add(buffer.toString());
    18. System.out.println("test1"+" "+ users);
    19. }
    20. @Override
    21. public void onCancelled(DatabaseError databaseError) {
    22. //Wenn ein Fehler auftritt:
    23. }
    24. });
    25. }
    26. System.out.println("test2"+" "+ users);
    27. //User Liste eintragen
    28. ListView list = findViewById(R.id.rangliste);
    29. list.setAdapter(new MyListAdapter(this, R.layout.regatta_items, users, usersid));
    30. }
    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 :S