1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

ArrayAdapter und ArrayList, nur bestimmte Daten anzeigen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von xilence, 30.09.2011.

  1. xilence, 30.09.2011 #1
    xilence

    xilence Threadstarter Neuer Benutzer

    Beiträge:
    5
    Erhaltene Danke:
    0
    Registriert seit:
    19.09.2011
    Hallo zusammen,
    ich komme im Moment zu keiner Lösung.
    Ich habe eine Klasse, die von ArrayAdapter erbt. In der getView() setze ich verschiedene Views in einer ListView, also eine Row.
    Konkret geht es darum, dass ein Benutzer einen Stundenplan erstellen kann. Dazu gibt es jeweils in einer TabSpec eine ListView, je nach Tag(Montag, Dienstag...). Insgesamt also 5 ListViews, auf die 5 TabSpecs verteilt.

    Nun kann der Benutzer eine Stunde hinzufügen. Dazu muss er neben dem Namen auch den Wochentag angeben.
    Nun soll die entsprechende ListView die Stunde anzeigen, wenn diese dem ausgewählten Wochentag entspricht. Also User wählt oben im Tabreiter z.B. Montag aus und es sollen die Stunden angezeigt werden, die Montags vorhanden sind.

    Da ist nämlich auch das Problem. Ich habe wie gesagt einen ArrayAdapter, dessen Datenmodell eine List<Lesson> ist. Eine Lesson hat ein Attribut in dem der Wochentag gespeichert ist.
    In der getView(...) wird überprüft ob der Tag des TabSpec dem Tag der Stunde entspricht. Es wird also geguckt, ob die Stunde in der aktuellen ListView angezeigt werden soll.
    Code:
     public View getView(int position, View convertView, ViewGroup parent) {
    ...
     if (context.getDay() == currentLesson.getWeekDay().getWeekDay()) {
                fillView(currentLesson, holder);
      }
    ...
    }
    
    private void fillView(Lesson currentLesson, ViewHolder holder) {
         holder.lessonNumber.setText(String.valueOf(currentLesson.getNumber()));
    }
    
    Das Problem ist jetzt, dass ich meinen ArrayAdapter wie folgt initialisiere:
    Code:
    timetableAdapter = new TimetableAdapter(this, getModel());
    
    getModel() liefer einfach eine ArrayList mit Lesson Objekten zurueck.

    Nun wird aber jedesmal, wenn der aktuell geöffnete Tab nicht dem Tag der Stunde entspricht eine Leerzeile in der entsprechenden ListView angezeigt.

    Meine Frag ist jetzt, wie kann ich meine Daten aufbereiten, um sie anhand von verschiedenen Tagen in dem ArrayAdapter selektieren zu können?
    Ich habe wenig Lust 5 ArrayListen und 5 ArrayAdapter für die entsprechenden Wochentage zu implementieren.
     
  2. xilence, 01.10.2011 #2
    xilence

    xilence Threadstarter Neuer Benutzer

    Beiträge:
    5
    Erhaltene Danke:
    0
    Registriert seit:
    19.09.2011
    So Problem geloest. Habe eine SimpleAdapter genommen und eine Filtermethode geschrieben.
     

Diese Seite empfehlen