实现ExpandableAdapter有如下三种方式。
(1)扩展BaseExpandableListAdpter实现ExpandableAdapter。
(2)使用SimpleExpandableListAdpater将两个List集合包装成ExpandableAdapter。
(3)使用SimpleCursorTreeAdapter将Cursor中的数据包装成SimpleCuroTreeAdapter。
一般适用于ExpandableListView的Adapter都要继承BaseExpandableListAdapter这个类,并且必须重载getGroupView和getChildView这两个最为重要的方法。
当扩展BaseExpandableListAdapter时,关键是实现如下四个方法。
(1)public abstractView getChildView(int groupPosition,int childPosition,boolean isLast-Child,ViewconvertView,ViewGroup parent)
取得显示给定分组给定子位置的数据用的视图,参数的含义如下。
groupPosition:包含要取得子视图的分组位置。
childPosition:分组中子视图(要返回的视图)的位置。
isLastChild:该视图是否为组中的最后一个视图。
convertView:如果可能,重用旧的视图对象。使用前要保证视图对象为非空,并且是合适的类型。如果该对象不能转换为可以正确显示数据的视图,该方法将创建新视图。
Pavent:该视图最终从属的父视图。
此方法返回指定位置相应的子视图。
(2)public abstract int getChildrenCount(int groupPosition)
取得指定分组的子元素数,参数groupPosition为要取得子元素个数的分组位置,返回指定分组的子元素个数。
(3)public abstract ViewgetGroupView(int groupPosition,boolean isExpanded,View conve-rtView,ViewGroup parent)
取得用于显示给定分组的视图。这个方法仅返回分组的视图对象,要想获取子元素的视图对象,就需要调用getChildView(int,int,boolean,View,ViewGroup)。
参数含义如下。
groupPosition:决定返回哪个视图的组位置。
isExpanded:该组是展开状态还是收起状态。
convertView:如果可能,重用旧的视图对象。使用前要保证视图对象为非空,并且是合适的类型。如果该对象不能转换为可以正确显示数据的视图,该方法将创建新视图,不保证使用先前由getGroupView(int,boolean,View,ViewGroup)创建的视图。
parent:该视图最终从属的父视图。
此方法返回指定位置相应的组视图。
(4)publicabstractintgetGroupCount()
取得分组数,返回分组数。
BaseExpandableListAdapter的重载的其他方法如下。(www.xing528.com)
(1)public abstract Object getChild(int groupPosition,int childPosition)
取得与指定分组、指定子项目关联的数据。
参数groupPosition包含子视图的分组的位置;childPosition为指定分组中的子视图的位置。
此方法返回与子视图关联的数据。
(2)public abstract long getChildId(int groupPosition,int childPosition)
取得给定分组中给定子视图的ID,该组ID必须在组中是唯一的,必须不同于其他所有ID(分组及子项目的ID)。
参数groupPosition包含子视图的分组的位置;childPosition为要取得ID的指定分组中的子视图的位置。
此方法返回与子视图关联的ID。
(3)public abstract longgetCombinedChildId(long groupId,long childId)
取得一览中可以唯一识别子条目的ID(包括分组ID和子条目ID)。可扩展列表要求每个条目(分组条目和子条目)具有一个可以唯一识别的ID,该方法根据给定子条目ID和分组条目ID返回唯一识别ID。另外,如果hasStableIds()为真,该函数返回的ID必须是固定不变的。
参数groupId包含子条目ID的分组条目ID;childId为子条目的ID。
此方法返回可以在所有分组条目和子条目中唯一识别该子条目的ID(可能是固定不变的)。
(4)public abstract Object getGroup(int groupPosition)
取得与给定分组关联的数据。
参数groupPosition为分组的位置。
此方法返回指定分组的数据。
(5)public abstract long getGroupId(int groupPosition)
取得指定分组的ID。该组ID必须在组中是唯一的,必须不同于其他所有ID(分组及子项目的ID)。
参数groupPosition为要取得ID的分组位置。
此方法返回与分组关联的ID。
(6)public abstract boolean hasStableIds()
指定在分组视图及其子视图的ID对应的后台数据发生改变时,是否保持该ID。
此方法返回是否相同的ID总是指向同一个对象。
(7)public abstract boolean isChildSelectable(int groupPosition,int childPosition)
指定位置的子视图是否可选择。
参数groupPosition包含要取得子视图的分组位置;childPosition为分组中子视图的位置。此方法返回是否子视图可选择。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。