Die Drawable habe ich gelöscht weil sie Daten von Vereinsmitgliedern enthalten. Sorry xD
Ja, nur der Admin bzw der schiedsrichter in dem fall soll die zeit stoppen können. Das machen wir indem der normale Benutzer auf der Startseite garnicht den Button angezeigt bekommt um diese "Regatta", so nennt sich das, zu starten.
Der Teil wo die Daten gespeichert werden habe ich oben geschickt.
Es gibt die Klasse Regatta in der Quasi alles wesentliche gemacht wird. Auch die Daten übertragen zu verrechnen etc.
Dann gibt es dort noch eine Klasse welche für die anzeige der einzelnen Benutzer zuständig ist. Da wird dann z.b. die zeit gestoppt und die gestoppte zeit dann in eine map von der Klasse Regatta gespeichert, in "userLastTime".
Die Punkte werden in der Klasse Regatta, in der Methode Zeitberechnung übertragen. Wie meinst du genau wo wo er das macht...? Er klickt auf den finsih button, der onClickListener löst aus und startet die methode "rundenAnzahlBerechnung". Hier wird geschaut in welcher runde alle teilnehmer sind und welches die niedrigste runde ist. diese wird dann gewertet. sobald die niedrigste runde berechnet wurde startet sich die methode "displayConfirmView". Hier wird einfach nur angezeigt das z.b. die zweite runde gewertet wird. und ob das so richtig ist. sobald man auf ja drückt startet sich "zeitBerechnung". Hier werden erstmal die Zeiten der Teilnehmer aus der jeweiligen runde in die Map "zeitTabelle" gespeichert. Diese wird dann sortiert. Also wer ist als erste ins ziel gekommen. Dann wird die Zeit mithilfe eines Yardsticks (das ist dieser Persönliche wert) umgerechnet. Wer jetzt erster ist bekommt einen punkt. wer zweiter ist 3. Der dritte 5.7 usw. Diese Punkte werden in die Map "alleUser" gespeichert. Diese Map enthält alle Benutzer, am anfang mit 99 Punkten. Jeder der nicht Teilgenommen hat bekommt nämlich 99 Punkte. Jetzt wird in der zeitberechnungsmethode für alle teilgenommenen eine punktzahl errechnet welche die 99 Punkte einfach überschreibt.
Dann wird egal ob es eine Regatta oder ein neuer lauf ist (einfach nur eine andere struktur zum abspeichern) die map alleuser komplett durchlaufen und mithilfe von
mDatabase.child("regatten").child(Integer.toString(regatten+1)).child("1").child(key).setValue(alleUser.get(key));
übertragen.
Wie gesagt darf das nur der Admin (schiedsrichter) machen. Alle normalen Benutzer können nichts in die datenbank schreiben. Sie können nur lesen. Also um z.b. auf der startseite ihre gesammtplatzierung zu sehen. Später dann auch einzelte bewertungen der jeweiligen läufe und regatten (deshalb die unterteilung beim abspeichern).
Wie du vielleicht schon rausgelesen hast ist das eine app für einen Segelverein. Der Schiedsrichter sitzt am rand und schaut den teilnehmern zu bzw stoppt ihre zeiten. Die Teilnehmer selbst können erst nachdem es gewertet wurde auf der startseite die gesammt plazierung sehen.
Den rest vom Text muss ich erstmal noch kurz verstehen xD