1 数据
public class ChapterLab { public static List<Chapter> geneneraMockDatas(){ List<Chapter> datas = new ArrayList<Chapter>(); Chapter root1 =new Chapter(1,"Android"); Chapter root2 =new Chapter(2,"Ios"); Chapter root3 =new Chapter(3,"Unity 3D"); Chapter root4 =new Chapter(4,"Cocos2d-x"); root1.addChild(1,"PullTOFresh"); root1.addChild(2,"android 8.0通知栏解决方案"); root1.addChild(3,"PullTOFresh与webView的js交互"); root1.addChild(4,"Android与UnAutomater 20的入门实战"); root1.addChild(5,"移动端音频视频入门"); root2.addChild(6,"iOS开发之LeanCloud"); root2.addChild(7,"ios开发之传感器"); root2.addChild(8,"ios开发之 网络协议"); root2.addChild(9,"ios开发之分享集成"); root2.addChild(11,"ios开发之FTP上传"); root3.addChild(12,"Unity 3D 翻牌游戏开发"); root3.addChild(13,"Untiy 3D 基础之变体的Transform"); root3.addChild(14,"dkjfsssss"); root3.addChild(15,"Unity 3D 之游戏开发之脚本系统"); root3.addChild(16,"Unity 3D 地形编辑器"); root4.addChild(17,"Cocos-2d在的看法设为提高"); root4.addChild(18,"Cocos-2d开发出题中拉法基 "); root4.addChild(19,"Cocos-2d按摩俄罗斯"); root4.addChild(21,"Cocos-2d铁壳带着"); root4.addChild(22,"新春特辑-Cocos抢红包"); datas.add(root1); datas.add(root2); datas.add(root3); datas.add(root4); return datas; } }
2 adapter
public class ChapterAdapter extends BaseExpandableListAdapter { private List<Chapter> mDatas; private LayoutInflater mInflater; private Context mContext; public ChapterAdapter(){} public ChapterAdapter(Context context,List<Chapter> listChapter){ this.mContext =context; this.mDatas = listChapter; mInflater = LayoutInflater.from(context); } @Override public int getGroupCount() { return mDatas.size(); } @Override public int getChildrenCount(int groupPosition) { return mDatas.get(groupPosition).getChildren().size(); } @Override public Object getGroup(int groupPosition) { return mDatas.get(groupPosition); } @Override public Object getChild(int groupPosition, int childPosition) { return mDatas.get(groupPosition).getChildren().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) { ParentViewHolder parentViewHolder=null; if(convertView==null){ convertView = mInflater.inflate(R.layout.item_parent_chapter,parent,false); parentViewHolder = new ParentViewHolder(); parentViewHolder.mTvName = convertView.findViewById(R.id.id_tv_name); convertView.setTag(parentViewHolder); }else { parentViewHolder = (ParentViewHolder) convertView.getTag(); } Chapter chapter = mDatas.get(groupPosition); parentViewHolder.mTvName.setText(chapter.getName()); return convertView; } @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { ChildViewHolder childViewHolder = null; if(convertView == null){ convertView = mInflater.inflate(R.layout.item_child_chapter,parent,false); childViewHolder = new ChildViewHolder(); childViewHolder.mTvName = convertView.findViewById(R.id.text_tv_name); convertView.setTag(childViewHolder); }else { childViewHolder = (ChildViewHolder) convertView.getTag(); } ChapterItem chapterItem = mDatas.get(groupPosition).getChildren().get(childPosition); childViewHolder.mTvName.setText(chapterItem.getName()); return convertView; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } public static class ParentViewHolder{ TextView mTvName; } public static class ChildViewHolder{ TextView mTvName; } }
3实体类
public class Chapter { private int id; private String name; private List<ChapterItem> children = new ArrayList<>(); public Chapter(){} public Chapter(int id, String name) { this.id = id; this.name = name; } public void addChild(ChapterItem chapterItem){ chapterItem.setPid(getId()); children.add(chapterItem); } public void addChild(int cid,String cname){ ChapterItem chapterItem = new ChapterItem(cid,cname); chapterItem.setPid(getId()); children.add(chapterItem); } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public List<ChapterItem> getChildren() { return children; } public void setChildren(List<ChapterItem> children) { this.children = children; } }
public class ChapterItem { private int id; private String name; public ChapterItem(){} public ChapterItem(int id, String name) { this.id = id; this.name = name; } private int pid; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPid() { return pid; } public void setPid(int pid) { this.pid = pid; } }
4 layout
Layout1 <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="40dp" android:gravity="center_vertical" android:textSize="16dp" android:id="@+id/text_tv_name" > </TextView>
Layout2
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="50dp" xmlns:tools="http://schemas.android.com/tools" android:background="@color/color"> <TextView android:id="@+id/id_tv_name" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_vertical" tools:text="android" android:textSize="24dp" android:textStyle="bold" /> </LinearLayout>