package com.ecollege.android.adapter; import android.content.Context; import android.text.Html; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import android.widget.TextView.BufferType; import com.ecollege.android.ECollegeApplication; import com.ecollege.android.R; import com.ecollege.api.model.ActivityStreamItem; import com.ecollege.api.model.ActivityStreamObject; import com.ecollege.api.model.Course; import com.ocpsoft.pretty.time.PrettyTime; public class ActivityFeedAdapter extends UberAdapter<ActivityStreamItem> { private static final PrettyTime prettyTimeFormatter = new PrettyTime(); public ActivityFeedAdapter(Context context, boolean canLoadMore) { super(context, true, false, canLoadMore); } @Override protected Object groupIdFunction(ActivityStreamItem item) { ActivityStreamItem asi = (ActivityStreamItem)item; if (asi.getTag() != null) return asi.getTag().toString(); return "Unknown"; } private static class ViewHolder { TextView titleText; TextView descriptionText; TextView timeText; TextView courseTitleText; ImageView icon; } @Override protected View getDataItemView(View convertView, ViewGroup parent, UberItem<ActivityStreamItem> item) { // A ViewHolder keeps references to children views to avoid unneccessary calls // to findViewById() on each row. ViewHolder holder; // When convertView is not null, we can reuse it directly, there is no need // to reinflate it. We only inflate a new View when the convertView supplied // by ListView is null. if (convertView == null) { convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.activity_item, null); // Creates a ViewHolder and store references to the two children views // we want to bind data to. holder = new ViewHolder(); holder.titleText = (TextView) convertView.findViewById(R.id.title_text); holder.descriptionText = (TextView) convertView.findViewById(R.id.description_text); holder.timeText = (TextView) convertView.findViewById(R.id.time_text); holder.courseTitleText = (TextView) convertView.findViewById(R.id.course_title_text); holder.icon = (ImageView) convertView.findViewById(R.id.icon); convertView.setTag(holder); } else { // Get the ViewHolder back to get fast access to the TextView // and the ImageView. holder = (ViewHolder) convertView.getTag(); } // Bind the data efficiently with the holder. ActivityStreamItem si = item.getDataItem(); ActivityStreamObject ob = si.getObject(); String title = ob.getObjectType(); String desc = ob.getSummary(); String objectType = ob.getObjectType(); long courseId = ob.getCourseId(); Course course = ((ECollegeApplication)parent.getContext().getApplicationContext()).getCourseById(courseId); if ("thread-topic".equals(objectType)) { title = "Topic: " + si.getTarget().getTitle(); holder.icon.setImageResource(R.drawable.ic_discussions_responses); } else if ("thread-post".equals(objectType)) { title = "Re: " + si.getTarget().getTitle(); holder.icon.setImageResource(R.drawable.ic_discussions_responses); } else if ("grade".equals(objectType)) { title = "Grade: " + si.getTarget().getTitle(); holder.icon.setImageResource(R.drawable.ic_grade); } else if ("dropbox-submission".equals(objectType)) { title = "Dropbox: " + si.getTarget().getTitle(); holder.icon.setImageResource(R.drawable.ic_dropbox); } else if ("exam-submission".equals(objectType)) { title = "Exam: " + si.getTarget().getTitle(); holder.icon.setImageResource(R.drawable.ic_exam_submission); } else if ("remark".equals(objectType)) { title = "Remark: " + si.getTarget().getTitle(); holder.icon.setImageResource(R.drawable.ic_remark); } if (title == null) title = ""; if (desc == null) desc = ""; holder.titleText.setText(Html.fromHtml(title)); holder.descriptionText.setText(Html.fromHtml(desc),BufferType.SPANNABLE); holder.timeText.setText(prettyTimeFormatter.format(si.getPostedTime().getTime())); if (course != null) { holder.courseTitleText.setText(Html.fromHtml(course.getTitle())); } return convertView; } }