2016-04-04 6 views
0

Soo, ich habe eine App, die im Grunde verschiedene Daten auflistet, wenn ein Fußballspiel gespielt wird. Wie ein Terminplan.Ansicht ändern, nachdem ein bestimmtes Datum abgelaufen ist

Die Spiele werden mit einem Adapter und RecyclerView in verschiedenen Fragmenten aufgelistet. Meine Frage ist das. Wie kann ich einfach die TextView oder den Hintergrund in der Liste basierend auf den Daten ändern, die übergeben wurden, als ich das Fragment mit den Ansichten geladen habe? Zum Beispiel:

Eine Zeile listet ein Spiel auf, das am 3. April 2016 gespielt wurde. Nachdem dieses Datum abgelaufen ist, möchte ich den Hintergrund in der Zeile ändern, um dem Benutzer anzuzeigen, dass dieses Spiel nicht verfügbar ist, vielleicht mit einem dunkleren Hintergrund oder so ähnlich.

Ich habe etwas gesucht, konnte aber nichts finden, das ähnlich war. Ich denke etwas wie "wenn, sonst" Aussage vielleicht? Wie könnte ich so etwas erreichen?

Antwort

1

Sie möchten dies in Ihrer benutzerdefinierten Adapterklasse tun, in der Sie die Informationen in jedem Listenelement auffüllen. Es würde im Grunde ungefähr so ​​aussehen:

private Arraylist<String> dates; // Pass this value when you construct Adapter class 

@Override 
public void onBindViewHolder(ViewHolder holder, int position) { 

    Calendar now = Calendar.getInstance(); 

    SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); // date strings should follow this specified format - e.g. 04/04/2016 15:05:00 
    Calendar gameTime = Calendar.getInstance(); 
    gameTime.setTime(sdf.parse(dates.get(position))); 
    int after = gameTime.compareTo(now); 

    if (after < 0) { 
     // Game time has passed, change background color 
    } else { 
     // Game is still in the future 
    } 
} 
+0

Sieht gut aus. Aber ich gebe nur eine einfache Zeichenfolge an einen TextView im Adapter. Gibt es eine Möglichkeit, das Datum zu definieren und dann zu verwenden? – Chris

+0

Ist der String ein aktuelles Datum? Wenn dies der Fall ist, könnten Sie einen DateFormatter verwenden, um die Datumszeichenfolge zu analysieren und sie in ein Date/Calendar-Objekt umzuwandeln und zu verwenden. – privatestaticint

+0

Die Zeichenfolge ist ein tatsächliches Datum ja. Setzen Sie wie "17 Sonntag 13:00". – Chris

Verwandte Themen