package org.edx.mobile.view.adapters; import android.annotation.SuppressLint; import android.content.Context; import android.os.SystemClock; import android.view.View; import android.widget.AdapterView; import org.edx.mobile.core.IEdxEnvironment; import org.edx.mobile.course.CourseDetail; import org.edx.mobile.util.images.CourseCardUtils; public abstract class FindCoursesListAdapter extends BaseListAdapter<CourseDetail> { private long lastClickTime; public FindCoursesListAdapter(Context context, IEdxEnvironment environment) { super(context, CourseCardViewHolder.LAYOUT, environment); lastClickTime = 0; } @SuppressLint("SimpleDateFormat") @Override public void render(BaseViewHolder tag, final CourseDetail courseDetail) { final CourseCardViewHolder holder = (CourseCardViewHolder) tag; holder.setCourseTitle(courseDetail.name); holder.setCourseImage(courseDetail.media.course_image.getUri(environment.getConfig().getApiHostURL())); holder.setDescription(CourseCardUtils.getDescription(courseDetail.org, courseDetail.number, null), CourseCardUtils.getFormattedDate(getContext(), courseDetail)); } @Override public BaseViewHolder getTag(View convertView) { return new CourseCardViewHolder(convertView); } @Override public void onItemClick(AdapterView<?> adapterView, View arg1, int position, long arg3) { //This time is checked to avoid taps in quick succession final long currentTime = SystemClock.elapsedRealtime(); if (currentTime - lastClickTime > MIN_CLICK_INTERVAL) { lastClickTime = currentTime; CourseDetail model = (CourseDetail)adapterView.getItemAtPosition(position); if (model != null) onItemClicked(model); } } public abstract void onItemClicked(CourseDetail model); }