package ca.etsmtl.applets.etsmobile.ui.adapter; import android.content.Context; import android.text.format.DateUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import org.joda.time.DateTime; import org.joda.time.format.DateTimeFormat; import org.joda.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; import java.util.Locale; import ca.etsmtl.applets.etsmobile.model.Seances; import ca.etsmtl.applets.etsmobile2.R; public class SeanceAdapter extends BaseAdapter { private List<TodayDataRowItem> listSeances; private Context context; public SeanceAdapter(Context context) { this.context = context; listSeances = new ArrayList<>(); } @Override public int getCount() { return listSeances.size(); } @Override public Object getItem(int position) { return listSeances.get(position).data; } @Override public long getItemId(int position) { return 0; } @Override public int getItemViewType(int position) { return listSeances.get(position).type; } @Override public int getViewTypeCount() { return TodayDataRowItem.viewType.values().length; } @Override public View getView(int position, View convertView, ViewGroup parent) { int viewType = getItemViewType(position); if (convertView == null) { if (viewType == TodayDataRowItem.viewType.VIEW_TYPE_TITLE_SEANCE.getValue()) { convertView = LayoutInflater.from(context).inflate(R.layout.row_today_title, parent,false); ViewSeacesTitleHolder titleHolder = new ViewSeacesTitleHolder(); titleHolder.tvTitle = (TextView) convertView.findViewById(R.id.todays_title); convertView.setTag(titleHolder); } else if (viewType == TodayDataRowItem.viewType.VIEW_TYPE_SEANCE.getValue()) { convertView = LayoutInflater.from(context).inflate(R.layout.row_today_courses, parent, false ); ViewSeancesHolder seancesHolder = new ViewSeancesHolder(); seancesHolder.tvHeureDebut = (TextView) convertView.findViewById(R.id.tv_today_heure_debut); seancesHolder.tvHeureFin = (TextView) convertView.findViewById(R.id.tv_today_heure_fin); seancesHolder.tvCoursGroupe = (TextView) convertView.findViewById(R.id.tv_today_cours_groupe); seancesHolder.tvNomActivite = (TextView) convertView.findViewById(R.id.tv_today_nom_activite); seancesHolder.tvLibelleCours = (TextView) convertView.findViewById(R.id.tv_today_libelle_cours); seancesHolder.tvLocal = (TextView) convertView.findViewById(R.id.tv_today_local); convertView.setTag(seancesHolder); } } if (viewType == TodayDataRowItem.viewType.VIEW_TYPE_SEANCE.getValue()) { Seances seance = (Seances) getItem(position); ViewSeancesHolder viewSeancesHolder = (ViewSeancesHolder) convertView.getTag(); viewSeancesHolder.tvNomActivite.setText(seance.nomActivite); viewSeancesHolder.tvLibelleCours.setText(seance.libelleCours); viewSeancesHolder.tvCoursGroupe.setText(seance.coursGroupe); viewSeancesHolder.tvLocal.setText(seance.local); DateTime mDateDebut = DateTime.parse(seance.dateDebut); DateTime mDateFin = DateTime.parse(seance.dateFin); String dateDebut = String.format("%dh%02d", mDateDebut.getHourOfDay(), mDateDebut.getMinuteOfHour()); String dateFin = String.format("%dh%02d", mDateFin.getHourOfDay(), mDateFin.getMinuteOfHour()); viewSeancesHolder.tvHeureDebut.setText(dateDebut); viewSeancesHolder.tvHeureFin.setText(dateFin); } else if (viewType == TodayDataRowItem.viewType.VIEW_TYPE_TITLE_SEANCE.getValue()) { ViewSeacesTitleHolder titleHolder = (ViewSeacesTitleHolder) convertView.getTag(); titleHolder.tvTitle.setText((String) getItem(position)); } return convertView; } public List<TodayDataRowItem> getItemList() { return listSeances; } public void setItemList(List<Seances> itemList) { listSeances = new ArrayList<>(); String tempDate = ""; DateTime today = new DateTime(); for(Seances seances : itemList) { DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd"); DateTime seanceDay = formatter.parseDateTime(seances.dateDebut.substring(0,10)); if(today.isAfter(seanceDay) && !DateUtils.isToday(seanceDay.getMillis()) ) { continue; } if(!seances.dateDebut.substring(0,10).equals(tempDate)) { tempDate = seances.dateDebut.substring(0,10); DateTime.Property pDoW = seanceDay.dayOfWeek(); DateTime.Property pDoM = seanceDay.dayOfMonth(); DateTime.Property pMoY = seanceDay.monthOfYear(); this.listSeances.add(new TodayDataRowItem(TodayDataRowItem.viewType.VIEW_TYPE_TITLE_SEANCE, context.getString(R.string.date_text, pDoW.getAsText(Locale.FRENCH), pDoM.get(), pMoY.getAsText(Locale.FRENCH)))); } this.listSeances.add(new TodayDataRowItem(TodayDataRowItem.viewType.VIEW_TYPE_SEANCE, seances)); } } static class ViewSeancesHolder { TextView tvHeureDebut; TextView tvHeureFin; TextView tvNomActivite; TextView tvCoursGroupe; TextView tvLibelleCours; TextView tvLocal; } static class ViewSeacesTitleHolder { TextView tvTitle; } }