ExpandableListView 的基本使用
Adapter 类控件是 ExpandableListView,就是可折叠的列表,它是 ListView 的子类, 在 ListView 的基础上它把应用中的列表项分为几组,每组里又可包含多个列表项。
1.相关属性
android:childDivider:指定各组内子类表项之间的分隔条,图片不会完全显示, 分离子列表项的是一条直线
android:childIndicator:显示在子列表旁边的 Drawable 对象,可以是一个图像
android:childIndicatorEnd:子列表项指示符的结束约束位置
android:childIndicatorLeft:子列表项指示符的左边约束位置
android:childIndicatorRight:子列表项指示符的右边约束位置
android:childIndicatorStart:子列表项指示符的开始约束位置
android:groupIndicator:显示在组列表旁边的 Drawable 对象,可以是一个图像
android:indicatorEnd:组列表项指示器的结束约束位置
android:indicatorLeft:组列表项指示器的左边约束位置
android:indicatorRight:组列表项指示器的右边约束位置
android:indicatorStart:组列表项指示器的开始约束位置
2.实现 ExpandableAdapter 的三种方式
1. 扩展 BaseExpandableListAdpter 实现 ExpandableAdapter。
2. 使用 SimpleExpandableListAdpater 将两个 List 集合包装成 ExpandableAdapter
3. 使用 simpleCursorTreeAdapter 将 Cursor 中的数据包装成 SimpleCuroTreeAdapter 本节示例使用的是第一个,扩展 BaseExpandableListAdpter,我们需要重写该类中的相关方法, 下面我们通过一个代码示例来体验下!
3.代码示例
我们来看下实现的效果图:
下面我们就来实现上图的这个效果:
核心是重写 BaseExpandableListAdpter,其实和之前写的普通的 BaseAdapter 是类似的, 但是 BaseExpandableListAdpter 则分成了两部分:组和子列表,具体看代码你就知道了!
另外,有一点要注意的是,重写 isChildSelectable()方法需要返回 true,不然不会触发 子 Item 的点击事件!下面我们来写写:
首先是组和子列表的布局:
item_exlist_group.xml
item_exlist_item.xml
然后是自定义的 Adapter 类:
MyBaseExpandableListAdapter.java
PS:存储子列表的数据不一定要用 ArrayList<ArrayList>这种,根据自己的需求 定义~
最后是 MainActivity 的布局以及 Java 代码:
布局文件:activity_main.xml
MainActivity.java
版权声明: 本文为 InfoQ 作者【向阳逐梦】的原创文章。
原文链接:【http://xie.infoq.cn/article/9b744367cebb63049e352fd5e】。文章转载请联系作者。
评论