2017-02-22 5 views
1

Ich brauche hier ein wenig Hilfe!Hinzufügen von Datumsabschnitten in RecyclerView

Ich habe this Leitfaden für einige Ergebnisse verfolgt.

Und Adapter ist eingerichtet, recyclerview wird initialisiert, aber ich habe Probleme mit der Anzeige der richtigen Daten in der Liste.

Also hier ist das, was ich versuche zu tun:

Zuerst ich bin Speichern von api geholt vorübergehend Datenliste in und auch ein Array Liste der Daten zu erstellen. Natürlich entferne ich doppelte Daten aus dieser Array-Liste, da einige Artikel nach demselben Datum sortiert sind.

Und hier ist ein Code und wie ich bin bevöl recyclerview und Bestell Artikel von Terminen in Sektionen:

// dates - array list of dates(16 February, 20 February..) 
// mEvents - temporarily list with size of 8 items 
// originalList - list of events ordered by date 

for (String date : dates) { 
    originalList.clear(); 
    for (Event event2 : mEvents) { 
     // Checking if item's date from temp. list is equal with 
     // iterated date and adding to original list 
     if (date.equals(event2.getDate())) { 
      originalList.add(event2); 
     } 
    } 

     // Attaching section to adapter with iterated date and array list related to that date 
     EventSection eventSection 
    = new EventSection(R.layout.lst_item_event_header, R.layout.lst_item_event_v2, date, originalList, getActivity()); 
         mSectionedRecyclerViewAdapter.addSection(eventSection); 
} 

Und Problem hier ist, dass ich für jeden Tag Abschnitt letzten 2 Artikel von den ursprünglichen Liste bekommen . Was ich hier vermisse?

EDIT:

// I need to sort items by these dates into sections 
Dates:: [2017-02-16, 2017-02-17, 2017-02-28, 2017-02-22, 2017-02-20] 

Event date:: 2017-02-16 
Event date:: 2017-02-16 
Event date:: 2017-02-17 
Event date:: 2017-02-17 
Event date:: 2017-02-28 
Event date:: 2017-02-22 
Event date:: 2017-02-20 
Event date:: 2017-02-20 

Antwort

2

Okay, ich habe endlich eine Lösung gefunden mit Hilfe von Beispielen von Autor-Bibliothek. Also, wenn jemand anderes Probleme wie ich hatte, wird dir das vielleicht helfen:

for (String date : dates) { 
    originalList = getEventsWithDate(date); 

    if (originalList.size() > 0) { 
     mSectionedRecyclerViewAdapter.addSection(new EventSection(date, originalList, getActivity())); 
    } 
} 

private List<Event> getEventsWithDate(String date) { 
    List<Event> events = new ArrayList<>(); 

    for (Event event : mEvents) { 
     if (date.equals(event.getDate())) { 
      events.add(event); 
     } 
    } 

    return events; 
} 
+0

Sorry, ich konnte Ihnen nicht weiter helfen, aber ich bin froh, dass Sie es herausgefunden haben. Vergessen Sie nicht, Ihre Antwort als die richtige Antwort zu setzen, damit andere Leute die richtige Antwort leicht finden können :) –

+0

Danke trotzdem Raymond! –

1

Sie eine for-Schleife geschachtelten tun haben, so meine Vermutung ist, dass das Problem irgendwo da drin ist. Überprüfen Sie die Bedingung, wenn Sie das möchten.

Wenn das für jedes Mal gilt, werden Sie mit 64 Elementen enden. Ich weiß nicht, was deine Daten sind, also kann ich das nicht für dich verifizieren.

Was wahrscheinlich passiert ist, dass, indem Sie die Liste nicht löschen, Sie der Ansicht jedes Mal eine größere und größere Liste hinzufügen. Löschen Sie die Liste, bevor Sie neue hinzufügen, und Sie sollten nur die gewünschte Liste rendern.

+0

Sollte ich die ursprüngliche Liste nach dem verschachtelten Loop-Finish löschen? –

+0

Ja das könnte es sehr wohl sein. Sie rendern jetzt die vollständige Liste, fügen dann weitere hinzu und drucken die gesamte Liste erneut. Ich werde meine Antwort ein wenig erweitern. –

+0

Jetzt bekomme ich zwei Artikel für jeden Abschnitt, und alle sind gleich. –

Verwandte Themen