@Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; int type = getItemViewType(position); if (convertView == null) { holder = new ViewHolder(); switch (type) { case TYPE_ITEM: convertView = mInflater.inflate(R.layout.fragment_subject_item, null); holder.titleView = (TextView) convertView.findViewById(R.id.text_subject_item_title); holder.dateView = (TextView) convertView.findViewById(R.id.text_subject_item_time); holder.roomView = (TextView) convertView.findViewById(R.id.text_subject_item_room); if (position % 2 == 0) { convertView.setBackgroundColor( context.getResources().getColor(R.color.abs__background_holo_dark)); } else { convertView.setBackgroundColor( context.getResources().getColor(R.color.abs__background_holo_light)); } break; case TYPE_SEPARATOR: convertView = mInflater.inflate(R.layout.fragment_subject_separator, null); holder.separatorView = (TextView) convertView.findViewById(R.id.text_subject_separator); break; } convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } if (type == TYPE_ITEM) { final Events item = mData.get(position); if (item != null) { if (selection == item.getId()) { convertView.setBackgroundResource(R.drawable.abs__list_activated_holo); int padding = context.getResources().getDimensionPixelSize(R.dimen.default_list_padding); convertView.setPadding(padding, padding, padding, padding); } else { convertView.setBackgroundResource(android.R.color.transparent); } try { holder.titleView.setText(item.getSubjects().getTitle()); } catch (Exception e) { Log.e(TAG, item.getSubjectId() + " " + item.getSubjects()); HashMap<String, String> extraData = new HashMap<String, String>(); extraData.put("subjectsid", String.valueOf(item.getSubjectId())); extraData.put("subjects", String.valueOf(item.getSubjects())); BugSenseHandler.sendExceptionMap(extraData, e); } holder.roomView.setText(item.getRoom()); holder.dateView.setText(df.format(item.getStart()) + " - " + df.format(item.getEnd())); } } else { try { Calendar nextSeperatorDate = Calendar.getInstance(); nextSeperatorDate.setTime(fullDateFormat.parse(getSeperatorItem(position))); long dateDiff = daysDiff(Calendar.getInstance(), nextSeperatorDate); if (dateDiff == 0) { holder.separatorView.setText(context.getString(R.string.text_today)); } else if (dateDiff == 1) { holder.separatorView.setText(context.getString(R.string.text_tomorrow)); } else if (dateDiff == -1) { holder.separatorView.setText(context.getString(R.string.text_yesterday)); } else if (dateDiff == -2) { holder.separatorView.setText(context.getString(R.string.text_twoago)); } else { holder.separatorView.setText(getSeperatorItem(position)); } } catch (Exception e) { holder.separatorView.setText(getSeperatorItem(position)); BugSenseHandler.sendException(e); } } return convertView; }