package org.lntu.online.ui.adapter; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseExpandableListAdapter; import android.widget.TextView; import org.lntu.online.R; import org.lntu.online.model.entity.UnpassCourse; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; public class UnpassCourseAdapter extends BaseExpandableListAdapter { private static final int[] flagColorResId = { R.color.red_light, R.color.green_light, R.color.blue_light, R.color.orange_light }; private LayoutInflater inflater; private List<UnpassCourse> unpassCourseList; public UnpassCourseAdapter(Context context, List<UnpassCourse> unpassCourseList) { inflater = LayoutInflater.from(context); this.unpassCourseList = unpassCourseList; } @Override public int getGroupCount() { return unpassCourseList == null ? 0 : unpassCourseList.size(); } @Override public int getChildrenCount(int groupPosition) { List<UnpassCourse.Record> recordList = unpassCourseList.get(groupPosition).getRecords(); return recordList == null ? 0 : recordList.size(); } @Override public Object getGroup(int groupPosition) { return unpassCourseList.get(groupPosition); } @Override public Object getChild(int groupPosition, int childPosition) { return unpassCourseList.get(groupPosition).getRecords().get(childPosition); } @Override public long getGroupId(int groupPosition) { return 0; } @Override public long getChildId(int groupPosition, int childPosition) { return 0; } @Override public boolean hasStableIds() { return false; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return false; } @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { GroupViewHolder holder; if (convertView == null) { convertView = inflater.inflate(R.layout.activity_unpass_course_item_group, parent, false); holder = new GroupViewHolder(convertView); convertView.setTag(holder); } else { holder = (GroupViewHolder) convertView.getTag(); } UnpassCourse course = unpassCourseList.get(groupPosition); holder.tvName.setText(course.getName()); holder.tvNum.setText(course.getNum()); holder.tvCredit.setText(course.getCredit() + ""); holder.tvSelectType.setText(course.getSelectType()); return convertView; } @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { ChildViewHolder holder; if (convertView == null) { convertView = inflater.inflate(R.layout.activity_unpass_course_item_child, parent, false); holder = new ChildViewHolder(convertView); convertView.setTag(holder); } else { holder = (ChildViewHolder) convertView.getTag(); } UnpassCourse.Record record = unpassCourseList.get(groupPosition).getRecords().get(childPosition); holder.tvSemester.setText(record.getYear() + record.getTerm()); holder.tvExamType.setText(record.getExamType()); holder.tvScore.setText(record.getScore()); holder.tvRemarks.setText(record.getRemarks()); holder.iconFlag.setBackgroundResource(flagColorResId[childPosition % flagColorResId.length]); holder.iconShadowTop.setVisibility(childPosition == 0 ? View.VISIBLE : View.GONE); holder.iconShadowBottom.setVisibility(childPosition == unpassCourseList.get(groupPosition).getRecords().size() - 1 ? View.VISIBLE : View.GONE); return convertView; } protected static class GroupViewHolder { @BindView(R.id.tv_name) protected TextView tvName; @BindView(R.id.tv_num) protected TextView tvNum; @BindView(R.id.tv_credit) protected TextView tvCredit; @BindView(R.id.tv_select_type) protected TextView tvSelectType; public GroupViewHolder(View convertView) { ButterKnife.bind(this, convertView); } } protected static class ChildViewHolder { @BindView(R.id.icon_flag) protected View iconFlag; @BindView(R.id.icon_shadow_top) protected View iconShadowTop; @BindView(R.id.icon_shadow_bottom) protected View iconShadowBottom; @BindView(R.id.tv_semester) protected TextView tvSemester; @BindView(R.id.tv_exam_type) protected TextView tvExamType; @BindView(R.id.tv_score) protected TextView tvScore; @BindView(R.id.tv_remarks) protected TextView tvRemarks; public ChildViewHolder(View convertView) { ButterKnife.bind(this, convertView); } } }