content: package com.mahao.alex.customviewdemo.tree_view;
  
  import android.app.Activity;
  import android.graphics.Color;
  import android.util.Log;
  import android.view.Gravity;
  import android.view.View;
  import android.view.ViewGroup;
  import android.widget.AbsListView;
  import android.widget.BaseExpandableListAdapter;
  import android.widget.ExpandableListView;
  import android.widget.TextView;
  
  import java.util.List;
  
  /**
   *
   * 班级的适配器
   * Created by MH on 2016/6/16.
   */
  public class ClassesExpandableListViewAdapter extends BaseExpandableListAdapter {
  
  
      // 班级的集合
      private List<Classes> classes;
  
      // 创建布局使用
      private Activity activity;
  
  
      public ClassesExpandableListViewAdapter(List<Classes> classes, Activity activity) {
          this.classes = classes;
          this.activity = activity;
      }
  
      @Override
      public int getGroupCount() {
          // 获取一级条目的数量  就是班级的大小
          return classes.size();
      }
  
      @Override
      public int getChildrenCount(int groupPosition) {
          // 获取对应一级条目下二级条目的数量，就是各个班学生的数量
          return classes.get(groupPosition).students.size();
      }
  
      @Override
      public Object getGroup(int groupPosition) {
          // 获取一级条目的对应数据  ，感觉没什么用
          return classes.get(groupPosition);
      }
  
      @Override
      public Object getChild(int groupPosition, int childPosition) {
          // 获取对应一级条目下二级条目的对应数据  感觉没什么用
          return classes.get(groupPosition).students.get(childPosition);
      }
  
      @Override
      public long getGroupId(int groupPosition) {
          // 直接返回，没什么用
          return groupPosition;
      }
  
      @Override
      public long getChildId(int groupPosition, int childPosition) {
          // 直接返回，没什么用
          return childPosition;
      }
  
      @Override
      public boolean hasStableIds() {
          // 谁知道这个是干什么。。。。
          return false;
      }
  
      @Override
      public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
  
          // 获取对应一级条目的View  和ListView 的getView相似
  
          return getGenericView(classes.get(groupPosition).name);
      }
  
      @Override
      public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
  
          // 获取对应二级条目的View  和ListView 的getView相似
          return getGenericView(classes.get(groupPosition).students.get(childPosition));
      }
  
      @Override
      public boolean isChildSelectable(int groupPosition, int childPosition) {
          // 根据方法名，此处应该表示二级条目是否可以被点击   先返回true 再讲
          return true;
      }
  
  
      /**
       * 根据字符串生成布局，，因为我没有写layout.xml 所以用java 代码生成
       *
       *      实际中可以通过Inflate加载布局文件并返回
       * @param string
       * @return
       */
      private TextView getGenericView(String string) {
  
          AbsListView.LayoutParams layoutParams = new AbsListView.LayoutParams(
                  ViewGroup.LayoutParams.MATCH_PARENT,
                  ViewGroup.LayoutParams.WRAP_CONTENT);
  
          TextView textView = new TextView(activity);
          textView.setLayoutParams(layoutParams);
  
          textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
  
          textView.setPadding(40, 20, 0, 20);
          textView.setText(string);
          textView.setTextColor(Color.RED);
          return textView;
      }
  
  }
  