1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung findest Du hier.
  1. xilence, 30.09.2011 #1
    xilence

    xilence Threadstarter Neuer Benutzer

    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

    So Problem geloest. Habe eine SimpleAdapter genommen und eine Filtermethode geschrieben.
     
Die Seite wird geladen...
Du betrachtest das Thema "ArrayAdapter und ArrayList, nur bestimmte Daten anzeigen" im Forum "Android App Entwicklung",