ExpandableListView是ListView的子类,是对ListView进行的扩展,他的列表内容提供不再是Adapter接口,而是ExpandableListAdapter接口来提供,同样ExpandableListAdapter接口的实现类有以下三种:
1.SimpleExpandableListAdapter
2. SimpleCursorTreeAdapter
3.BaseExpandableListAdapter
下面主要介绍下扩展BaseExpandableListAdapter类来实现:
使用步骤:
-
首先在布局文件中添加ExpandableListView组件
-
在代码中定义列表项资源,在定义资源的时候可以这样思考:首先是定义组列表项的内容资源(假如每个组列表项由一张图片和一个类别名称组成,那么就先定义一个图片资源的数组和一个类别名称的数组,分组个数和数组长度一致),其次是定义子列表项的内容,假如每个组的子列表项都是简单的显示一个文本,那么就可以定义一个二维数组(包含多个一维数组的数组),如:
String[] [] str = new String[] [] {
{“第一组1”,” 第一组2”,” 第一组3”},
{“第二组1”,” 第二组2”,” 第二组3”,’第二组4”}
{“第一组1”,” 第一组2” }
};
注意:二维数组的内一维数组的个数要和分组个数一致,至于每个一维数组内部包含多少个元素,这个可以不相同。
-
创建BaseExpandableListAdapter对象,在创建的时候需重写四个方法:
1.getChild(groupposition,childposition):返回具体的子列表的值:return str[groupposition][ childposition]
2.getChildId(groupposition,childposition):返回子列表id,return childposition
3.getChildrenCount(groupposition):返回子列表的个数,return str[groupposition].length;
4.getChildView:用来设置子列表的内容,通常调用getChild获得数组的具体值。
5.getGroup(groupposition):返回某个数组的名称,return name[groupposition];
6.getGroupId(groupposition):返回组id,returngroupposition;
7.getGroupCount:设置组的数目,return name.lehgth;
8.getGroupView:用来设置组的内容,通常调用getgroup获得组的文字表示
9.其余的方法直接返回true就行了
4.将adapter与eapandableListView进行适配