package com.athena.asm.Adapter; import java.util.List; import android.util.TypedValue; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseExpandableListAdapter; import android.widget.TextView; import com.athena.asm.R; import com.athena.asm.aSMApplication; import com.athena.asm.data.Subject; public class GuidanceListAdapter extends BaseExpandableListAdapter { private LayoutInflater m_inflater; private List<String> m_sections; private List<List<Subject>> m_subjects; static class ChildViewHolder{ TextView boardNameTextView; TextView authorTextView; TextView titleTextView; } static class GroupViewHolder{ TextView sectionNameTextView; } public GuidanceListAdapter(LayoutInflater inflater, List<String> sectionList, List<List<Subject>> subjectList) { this.m_inflater = inflater; this.m_sections = sectionList; this.m_subjects = subjectList; } public Object getChild(int groupPosition, int childPosition) { return m_subjects.get(groupPosition).get(childPosition); } public long getChildId(int groupPosition, int childPosition) { return childPosition; } @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { Subject subject = m_subjects.get(groupPosition).get(childPosition); ChildViewHolder holder; if (convertView == null) { convertView = m_inflater.inflate(R.layout.guidance_list_item, null); holder = new ChildViewHolder(); holder.boardNameTextView = (TextView) convertView.findViewById(R.id.BoardName); holder.authorTextView = (TextView) convertView.findViewById(R.id.AuthorID); holder.titleTextView = (TextView) convertView.findViewById(R.id.SubjectTitle); convertView.setTag(R.id.tag_first, holder); } else { holder = (ChildViewHolder) convertView.getTag(R.id.tag_first); } holder.boardNameTextView.setText(subject.getBoardChsName()); holder.authorTextView.setText(subject.getAuthor()); holder.titleTextView.setText(subject.getTitle()); holder.titleTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, aSMApplication.getCurrentApplication().getGuidanceSecondFontSize()); convertView.setTag(R.id.tag_second, subject); if (aSMApplication.getCurrentApplication().isNightTheme()) { holder.boardNameTextView.setTextColor(convertView.getResources().getColor(R.color.blue_text_night)); holder.titleTextView.setTextColor(convertView.getResources().getColor(R.color.status_text_night)); holder.authorTextView.setTextColor(convertView.getResources().getColor(R.color.blue_text_night)); } return convertView; } @Override public int getChildrenCount(int groupPosition) { return m_subjects.get(groupPosition).size(); } @Override public Object getGroup(int groupPosition) { return m_sections.get(groupPosition); } @Override public int getGroupCount() { return m_sections.size(); } @Override public long getGroupId(int groupPosition) { return groupPosition; } @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { GroupViewHolder holder; if (convertView == null){ convertView = m_inflater.inflate(R.layout.guidance_list_section_header, null); holder = new GroupViewHolder(); holder.sectionNameTextView = (TextView) convertView.findViewById(R.id.SectionName); convertView.setTag(holder); } else { holder = (GroupViewHolder) convertView.getTag(); } holder.sectionNameTextView.setText(m_sections.get(groupPosition)); holder.sectionNameTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, aSMApplication.getCurrentApplication().getGuidanceFontSize()); if (aSMApplication.getCurrentApplication().isNightTheme()) { holder.sectionNameTextView.setTextColor(convertView.getResources().getColor(R.color.status_text_night)); } return convertView; } @Override public boolean hasStableIds() { return true; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } }