package de.htwdd; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.LinearLayout; import android.widget.TextView; import java.text.DateFormatSymbols; import java.util.ArrayList; import java.util.Calendar; import java.util.GregorianCalendar; import de.htwdd.classes.CONST; import de.htwdd.classes.LessonSearch; import de.htwdd.types.Lesson; import de.htwdd.types.RoomTimetable; /** * Adapter für die Belungsanzeige * @author Kay Förster */ public class RoomTimeTableAdapter extends BaseAdapter { private ArrayList<RoomTimetable> arrayList; private LayoutInflater inflater; private Context context; private Calendar calendar; private String[] lessonDS; public RoomTimeTableAdapter(Context context, ArrayList<RoomTimetable> arrayList) { this.arrayList = arrayList; this.context = context; this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); this.calendar = GregorianCalendar.getInstance(); lessonDS = context.getResources().getStringArray(R.array.lesson_ds_timeOnly); } @Override public int getCount() { return arrayList.size(); } @Override public RoomTimetable getItem(int i) { return arrayList.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { if (view == null) view = inflater.inflate(R.layout.fragment_room_timetable_item, viewGroup, false); // Hole Item final RoomTimetable roomTimetable = getItem(i); // Bestimme aktuelle DS int current_time = CONST.TimetableCalc.currentTime(); int current_ds = CONST.TimetableCalc.getCurrentDS(current_time); // Setze Title TextView title = (TextView)view.findViewById(R.id.fragment_room_timetable_titel); title.setText(roomTimetable.RoomName); // Setzte Tag if (roomTimetable.day != calendar.get(Calendar.DAY_OF_WEEK)-1) { final String[] nameOfDays = DateFormatSymbols.getInstance().getWeekdays(); TextView overview_day = (TextView)view.findViewById(R.id.overview_lesson_day); overview_day.setText(nameOfDays[roomTimetable.day+1]); // Anzeige der aktuellen Stunde "ausschalten current_ds = 0; } // Daten für Stundenplan-Vorschau String[] values = new String[7]; LessonSearch lessonSearch = new LessonSearch(); for (int x=1; x<8; x++) { ArrayList<Lesson> lessons = new ArrayList<Lesson>(); for (Lesson lesson : roomTimetable.Timetable) { if (lesson.ds == x) lessons.add(lesson); } // Suche nach passender Stunde int single = lessonSearch.searchLesson(lessons, calendar.get(Calendar.WEEK_OF_YEAR)); switch (single) { case 0: values[x-1] = ""; break; case 1: values[x-1] = lessonSearch.lesson.lessonTag+ " ("+lessonSearch.lesson.type+")"; break; case 2: values[x-1] = context.getResources().getString(R.string.timetable_moreLessons); break; } } LinearLayout linearLayout = (LinearLayout) view.findViewById(R.id.overview_lessons_list); linearLayout.removeAllViews(); int index = 0; for (String lessonD : lessonDS) { View sub_view = inflater.inflate(R.layout.fragment_timetable_busy_plan, viewGroup, false); // Hintergrund einfärben if (index% 2 == 0) sub_view.setBackgroundColor(context.getResources().getColor(R.color.whitegrey)); else sub_view.setBackgroundColor(context.getResources().getColor(R.color.white)); if (index == (current_ds - 1)) sub_view.setBackgroundColor(context.getResources().getColor(R.color.hellblau)); // Zeiten anzeigen TextView textDS = (TextView) sub_view.findViewById(R.id.timetable_busy_plan_ds); textDS.setText(lessonD); // Stunde anzeigen TextView textLesson = (TextView) sub_view.findViewById(R.id.timetable_busy_plan_lesson); textLesson.setText(values[index]); // Index erhöhen index++; // View zum LinearLayout hinzufügen linearLayout.addView(sub_view); } return view; } }