简介

今天我们来看看 APIdemo中的 ExpandableListActivity,从名字来看,它是 Activity的子类,而且还与 Listview有关,Expandable是可张开的意思,那么他就是一个可张开的Listview。
exex

特点

谷歌文档是这么说的:

ExpandableListActivity hosts a ExpandableListView object that can be bound to different data sources that provide a two-levels of data (the top-level is group, and below each group are children).

  • 大概意思是 ExpandableListActivity持有 ExpandableListView对象,可以绑定不同的数据源来提供了两级的数据(第一级是组,每一组的下面是子组),也即是说它每个列表项有两个组,一个是主组,一个是它的子组。

如何使用

上面提到 ExpandableListActivity持有 ExpandableListView,要使用 ExpandableListView,就要为他提供一个 Adpter,这与Listview很类似,但也有不同,使用的是 BaseExpandableListAdapter, CursorTreeAdapter, ResourceCursorTreeAdapter, SimpleCursorTreeAdapter, SimpleExpandableListAdapter,谷歌文档给出的Demo就是使用BaseExpandableListAdapter,下面来看看源码。

  • 从上面可以看到,BaseExpandableListAdapter其实是一个抽象类,使用时需要实现其中的方法,
    比较主要的方法有 getGroupView(XXX)方法和 getChildView(XX),这两个方法分别控制主组的显示视图和子组的显示视图,返回值都是View对象。 我们可以用 java代码来写布局,也可以通过布局填充的方式来加载(LayoutInflater ),Demo中是用的java代码。我个人觉得用 LayoutInflater比较方便。

  • 在 BaseExpandableListAdapter需要定义两个数组,一个是为主组提供显示数据的一维数组,另一个是为展开项的子组提供数据的二位数组。

发表评论

电子邮件地址不会被公开。 必填项已用*标注