dein alter code solte so auch laufen. nur bei dem neuen Lauf bin ich mir nicht sicher habe ich nicht gestestet.
Code
private void zeitBerechnung(int runde) {
for (String e : userLastTime.keySet()) {
zeitTabelle.put(e, userLastTime.get(e).get(runde - 1));
}
final Map<String, Integer> unsortMap = new HashMap<>();
for (boolean e : checked) {
if (e) {
auswahlAnzahl++;
}
}
for (final Map.Entry e : zeitTabelle.entrySet()) {
if (!e.getValue().toString().equals("00:00:00")) {
//mit dem yardstick berechnen
mDatabase.child("users").child(e.getKey().toString()).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
int yardstickDb = Integer.parseInt(dataSnapshot.child("Yardstick").getValue().toString());
int zeitInSekunden;
int berechneteYardstickzeit;
String numbers = e.getValue().toString();
String[] split = numbers.split(":");
zeitInSekunden = Integer.parseInt(split[2]);
zeitInSekunden += Integer.parseInt(split[1]) * 60;
zeitInSekunden += Integer.parseInt(split[0]) * 60 * 60;
berechneteYardstickzeit = (zeitInSekunden * 100) / yardstickDb;
berechnungsZähler++;
unsortMap.put(e.getKey().toString(), berechneteYardstickzeit);//hilfe
Log.i("test", "im listner :" + e.getKey()+ " "+ berechnungsZähler+ " "+auswahlAnzahl);
//berechnung fertig
Map<String, Integer> sortedMap = sortByValue(unsortMap);
int i = 0;
for (String key : sortedMap.keySet()) {
i++;
if (i == 1) {
alleUser.put(key, 0.);
}
if (i == 2) {
alleUser.put(key, 3.);
}
if (i == 3) {
alleUser.put(key, 5.7);
}
if (i == 4) {
alleUser.put(key, 8.);
}
if (i == 5) {
alleUser.put(key, 10.);
}
if (i == 6) {
alleUser.put(key, 11.7);
}
if (i >= 7) {
alleUser.put(key, i + 6.);
}
}
//bei neue Regatta
Log.i("test", "if test ob auswahl Regatta : " + auswahl);
if (auswahl.equals("Neue Regatta")) {
/*for (String key : alleUser.keySet()) {
Log.i("test", "in der daten schreiben Schleife :" + key);
mDatabase.child("regatten").child(Integer.toString(regatten + 1)).child("1").child(key).setValue(alleUser.get(key));
}*/
String key = (String) e.getKey();
mDatabase.child("regatten").child(Integer.toString(regatten+1)).child("1").child(key).setValue(alleUser.get(key));
Log.i("test", "Daten geschreiben :" + key);
}
//Bei Neuer Lauf
else if (auswahl.equals("Neuer Lauf")) {
mDatabase.child("regatten").child(Integer.toString(regatten)).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
lauf = 0;
Iterator<DataSnapshot> dataSnapshots = dataSnapshot.getChildren().iterator();
while (dataSnapshots.hasNext()) {
DataSnapshot dataSnapshotChild = dataSnapshots.next();
lauf++;
}
for (String key : alleUser.keySet()) {
mDatabase.child("regatten").child(Integer.toString(regatten)).child(Integer.toString(lauf + 1)).child(key).setValue(alleUser.get(key));
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
if (berechnungsZähler == auswahlAnzahl) {
Log.i("test", "regatta abbrechen ");
regattaAbbrechen();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
}
Alles anzeigen