2016-06-19 11 views
0

Der Titel ist vielleicht etwas verwirrend. Ich habe einen TimePicker für den Benutzer, um die Dauer eines Ereignisses auszuwählen, ich möchte jeden Wert, den der Benutzer eingibt, abrufen, speichern und dann den Standardwert des TimePickers auf die Zeit einstellen, die der Benutzer am häufigsten auswählt , damit es ihm Zeit spart.Setzen Sie alle Werte, die der Benutzer auswählt, in einen TimePicker in einer Liste und lesen Sie ihn.

Zum Beispiel, wenn der Benutzer ständig 1h und 45m wählt, wenn er zurückgeht, um ein weiteres Ereignis hinzuzufügen, wird es in 1h und 45m sein, bisher habe ich nichts probiert, weil ich nicht weiß wie, ich nur weiß, wie man den Startwert des TimePickers definiert.

timePickerDuration.setIs24HourView(true);  
timePickerDuration.setCurrentHour(1); 
timePickerDuration.setCurrentMinute(30); 
+0

Wählen Sie die Zeit speichern Sie es als eine Zeichenfolge, wieder wählen Sie eine andere Zeit speichern Sie gleiche als String und besser diese Zeichenfolgen in einer ArrayList hinzufügen, dann vergleichen. Versuchen Sie es einmal Wenn Sie irgendein Problem haben, dann können Sie frei fragen. –

+0

Ok ich habe es versucht, aber ich vermisse den letzten Schritt: http://imgur.com/Emj3Wo6 –

Antwort

1

Wie pro Ihre try bis hier, Wenn Ihr HoursList Arraylist den richtigen Wert enthält, dann können Sie Schleife wie diese und die meist gewählte Stunde finden,

Map<Integer, Integer> map = new HashMap<Integer, Integer>(); 
for (Integer i : HoursList) { 
    Integer count = map.get(i); 
    map.put(i, count != null ? count+1 : 0); 
} 

Integer mostlySelectedhr = Collections.max(map.entrySet(), 
    new Comparator<Map.Entry<Integer, Integer>>() { 
    @Override 
    public int compare(Entry<Integer, Integer> o1, Entry<Integer, Integer> o2) { 
     return o1.getValue().compareTo(o2.getValue()); 
    } 
}).getKey(); 

Und schließlich mostlySelectedhr ist die meist ausgewählte Stunde.

+0

Vielen Dank! =) –