package at.tugraz.examreminder.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import at.tugraz.examreminder.R;
import at.tugraz.examreminder.core.Course;
import at.tugraz.examreminder.core.CourseContainer;
import at.tugraz.examreminder.core.Exam;
import java.util.*;
public class ExamsAdapter extends BaseAdapter{
private Context context;
private Course course;
private List<Exam> exams = new ArrayList<Exam>();
private OnItemClickListener onItemClickListener;
/**
* Use this Constructor if you want to use the CourseContainer instead of a single Course
* @param context
*/
public ExamsAdapter(Context context) {
this.context = context;
this.course = null;
onItemClickListener = null;
loadExams();
}
/**
*
* @param context
* @param course The Course to use for the exams, if null the CourseContainer is used
*/
public ExamsAdapter(Context context, Course course) {
this.context = context;
this.course = course;
onItemClickListener = null;
loadExams();
}
public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
this.onItemClickListener = onItemClickListener;
}
protected void loadExams() {
exams.clear();
if(course != null){
exams.addAll(course.exams);
} else {
for(int i = 0; i < CourseContainer.instance().size(); i++) {
exams.addAll(CourseContainer.instance().get(i).exams);
}
}
Collections.sort(exams);
}
@Override
public void notifyDataSetChanged() {
loadExams();
super.notifyDataSetChanged();
}
@Override
public int getCount() {
return exams.size();
}
@Override
public Exam getItem(int position) {
return exams.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
int layout = R.layout.exam_item;
LayoutInflater inflater = LayoutInflater.from(context);
convertView = inflater.inflate(layout, parent, false);
}
ViewGroup group = (ViewGroup)convertView;
Exam exam = getItem(position);
((TextView)group.findViewById(R.id.course_text)).setText(exam.course.name);
((TextView)group.findViewById(R.id.start_text)).setText(exam.getFromFormated());
Calendar now = new GregorianCalendar();
int year = now.get(Calendar.YEAR);
int month = now.get(Calendar.MONTH);
int day = now.get(Calendar.DAY_OF_MONTH);
now.set(year, month, day, 0, 0, 0);
long days = (exam.getFrom().getTime().getTime() - now.getTime().getTime()) / 1000 / 60 / 60 / 24;
((TextView)group.findViewById(R.id.days_text)).setText(String.valueOf(days));
group.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(onItemClickListener != null) {
onItemClickListener.onItemClick(position);
}
}
});
return group;
}
public interface OnItemClickListener {
public void onItemClick(int position);
};
}