2017-03-20 2 views
0

Ich mag unten ein Listview mit Header (Datum) und den Inhalt füllen (Planungen in diesem Datum). Ich habe 2 Listen, eine für die Kopfzeilen, eine für den Inhalt, und ich möchte eine als Ausgabe haben.Merge Rx Observable nach Datum

Dies ist die aktuelle Implementierung, die sehr ineffizient zu sein scheint.

Gibt es eine Möglichkeit, es als ein einzelnes Observable zu tun, das die beiden Listen zusammenführt und eins ausgibt? Es soll Ausgang Kopf Datum zuerst, als wenn Planungen an diesem Tag verfügbar sind die Planungen, und dann der nächste Header.

for (int i = 0; i < 7; i++) { 
      int currentHeaderPosition = listItems.size(); 
      LocalDate currentDate = startDate.plusDays(i); 
      listItems.add(currentDate); 
      Observable.fromIterable(data.shiftPlannings) 
        .filter(planning -> planning.getStartTime().compareTo(currentDate) == 0) 
        .subscribe(planning -> { 
         listItems.add(planning);}); 

    } 

Antwort

-1

aus dem Code, ist es scheint, dass Sie im Speicher befindlichen Daten handeln auf, so Rx nicht das richtige Werkzeug dafür ist, ist Rx für Sammlungen/Ereignisse im Laufe der Zeit.

Sie können es einfach tun, Liste/Array von Listen pro Wochentag haben, über die Planungsobjekte iterieren und jede Planung zur übereinstimmenden Liste hinzufügen.