package com.example.jixiaxian;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseExpandableListAdapter;
import android.widget.CheckBox;
import android.widget.TextView;
import java.util.List;
public class ClassesExpandableListViewAdapterextends BaseExpandableListAdapter {
// 集合
private Listclasses;
// 创建布局使用
private Contextactivity;
private boolean but;
private int grs;
public ClassesExpandableListViewAdapter(List classes, Context activity) {
this.classes = classes;
this.activity = activity;
}
@Override
public int getGroupCount() {
// 获取一级条目的数量 就是班级的大小
return classes.size();
}
@Override
public int getChildrenCount(int groupPosition) {
// 当它子空间没有 数据时
if(classes.get(groupPosition).getCHILD()!=null){
int size =classes.get(groupPosition).getCHILD().size();
Log.e("11111","getChildrenCount: "+size );
return classes.get(groupPosition).getCHILD().size();
}
return 0;
}
@Override
public Object getGroup(int groupPosition) {
// 获取一级条目的对应数据
return classes.get(groupPosition);
}
@Override
public Object getChild(int groupPosition,int childPosition) {
// 获取对应一级条目下二级条目的对应数据 感觉没什么用
return classes.get(groupPosition).getCHILD().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相似
String leaf =classes.get(groupPosition).getLEAF();
//数据源里的 LEAF 是 1 是 没有子数据 2是 有数据
ViewHodule hodule=null;
if("2".equals(leaf)){
View inflate = LayoutInflater.from(activity).inflate(R.layout.layout_item2,null);
CheckBox checkBox = inflate.findViewById(R.id.cbx1);
TextView viewById = inflate.findViewById(R.id.zi2);
//当点击的 那个索引时才 打开图片
if(grs==groupPosition){
checkBox.setChecked(but);
}
viewById.setText(classes.get(groupPosition).getNAME());
return inflate;
}else{
return getGenericView(classes.get(groupPosition).getNAME());
}
}
public void setSetBuon(boolean b,int groupPosition) {
//是否展开状态
but=b;
//记录索引
grs=groupPosition;
}
class ViewHodule{
TextViewzi1;
CheckBoxbox;
}
@Override
public View getChildView(int groupPosition,int childPosition,boolean isLastChild, View convertView, ViewGroup parent) {
// 获取对应二级条目的View 和ListView 的getView相似
return getGenericView1(classes.get(groupPosition).getCHILD().get(childPosition).getNAME());
}
@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(180,30,0,30);
textView.setText(string);
textView.setTextSize(20);
textView.setTextColor(Color.BLACK);
return textView;
}
private TextView getGenericView1(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);
//设置 北方大区里第3级 左右距离
textView.setPadding(240,30,0,30);
textView.setText(string);
textView.setTextSize(20);
textView.setTextColor(Color.BLACK);
return textView;
}
}