package com.ecollege.android.adapter; import android.app.Activity; import android.content.Context; import android.text.Html; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.ecollege.android.R; import com.ecollege.android.adapter.UberItem.UberItemType; import com.ecollege.android.view.helpers.ResponseCountViewHelper; import com.ecollege.api.model.ContainerInfo; import com.ecollege.api.model.DiscussionTopic; import com.ecollege.api.model.ResponseCount; import com.ecollege.api.model.UserDiscussionTopic; public class TopicsAdapter extends UberAdapter<UserDiscussionTopic> { public TopicsAdapter(Context context, TopicAdapterMode mode) { super(context,mode == TopicAdapterMode.GROUP_BY_COURSE_FILTER_INACTIVE ,mode == TopicAdapterMode.GROUP_BY_COURSE_FILTER_INACTIVE,false); } static class ViewHolder { ImageView icon; TextView titleText; TextView totalResponseCountText; TextView unreadResponseCountText; TextView userResponseCountText; } static class FooterViewHolder { TextView linkText; } public enum TopicAdapterMode { GROUP_BY_COURSE_FILTER_INACTIVE, NO_GROUP_NO_FILTER } public class CourseGroupId { private long courseId; private String courseTitle; public CourseGroupId(long courseId, String courseTitle) { this.courseId = courseId; this.courseTitle = courseTitle; } public long getCourseId() { return courseId; } @Override public String toString() { return courseTitle; } @Override public boolean equals(Object o) { if (o == null) return false; if (!(o instanceof CourseGroupId)) return false; return ((CourseGroupId)o).getCourseId() == getCourseId(); } } @Override public boolean isEnabled(int position) { UberItem<UserDiscussionTopic> item = getItem(position); if (item.getItemType() == UberItemType.FOOTER) { return true; } else { return super.isEnabled(position); } } @Override protected Object groupIdFunction(UserDiscussionTopic item) { UserDiscussionTopic userTopic = (UserDiscussionTopic)item; DiscussionTopic topic = userTopic.getTopic(); ContainerInfo info = topic.getContainerInfo(); return new CourseGroupId(info.getCourseId(), Html.fromHtml(info.getCourseTitle()).toString()); } @Override protected View getFooterView(int position, View convertView, ViewGroup parent, Object groupId) { FooterViewHolder holder; if (convertView == null) { convertView = ((Activity)parent.getContext()).getLayoutInflater().inflate(R.layout.see_all_discussions, null); holder = new FooterViewHolder(); holder.linkText = (TextView) convertView.findViewById(R.id.see_all_text); convertView.setTag(holder); } else { holder = (FooterViewHolder) convertView.getTag(); } holder.linkText.setText("See all topics for " + groupId.toString()); return convertView; } @Override protected View getDataItemView(View convertView, ViewGroup parent, UberItem<UserDiscussionTopic> item) { ViewHolder holder; if (convertView == null) { convertView = ((Activity)context).getLayoutInflater().inflate(R.layout.user_topic_item, null); holder = new ViewHolder(); holder.icon = (ImageView) convertView.findViewById(R.id.icon); holder.titleText = (TextView) convertView.findViewById(R.id.title_text); holder.totalResponseCountText = (TextView) convertView.findViewById(R.id.total_response_count_text); holder.unreadResponseCountText = (TextView) convertView.findViewById(R.id.unread_response_count_text); holder.userResponseCountText = (TextView) convertView.findViewById(R.id.user_response_count_text); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } UserDiscussionTopic userTopic = item.getDataItem(); DiscussionTopic topic = userTopic.getTopic(); ResponseCount responseCount = userTopic.getChildResponseCounts(); holder.titleText.setText(Html.fromHtml(topic.getTitle()).toString()); ResponseCountViewHelper responseCountViewHelper = new ResponseCountViewHelper( context, holder.icon, holder.unreadResponseCountText, holder.totalResponseCountText, holder.userResponseCountText ); responseCountViewHelper.setResponseCount(responseCount); return convertView; } }