首页 理论教育 了解ExpandableAdapter:适用于列表的强大工具

了解ExpandableAdapter:适用于列表的强大工具

时间:2023-06-27 理论教育 版权反馈
【摘要】:实现ExpandableAdapter有如下三种方式。使用SimpleExpandableListAdpater将两个List集合包装成ExpandableAdapter。使用SimpleCursorTreeAdapter将Cursor中的数据包装成SimpleCuroTreeAdapter。一般适用于ExpandableListView的Adapter都要继承BaseExpandableListAdapter这个类,并且必须重载getGroupView和getChildView这两个最为重要的方法。当扩展BaseExpandableListAdapter时,关键是实现如下四个方法。public abstract ViewgetGroupView取得用于显示给定分组的视图。isExpanded:该组是展开状态还是收起状态。publicabstractintgetGroupCount()取得分组数,返回分组数。public abstract boolean hasStableIds()指定在分组视图及其子视图的ID对应的后台数据发生改变时,是否保持该ID。public abstract boolean isChildSelectable指定位置的子视图是否可选择。

了解ExpandableAdapter:适用于列表的强大工具

实现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)

取得显示给定分组给定子位置的数据用的视图,参数的含义如下。

978-7-111-58810-8-Chapter05-50.jpggroupPosition:包含要取得子视图的分组位置。

978-7-111-58810-8-Chapter05-51.jpgchildPosition:分组中子视图(要返回的视图)的位置。

978-7-111-58810-8-Chapter05-52.jpgisLastChild:该视图是否为组中的最后一个视图。

978-7-111-58810-8-Chapter05-53.jpgconvertView:如果可能,重用旧的视图对象。使用前要保证视图对象为非空,并且是合适的类型。如果该对象不能转换为可以正确显示数据的视图,该方法将创建新视图。

978-7-111-58810-8-Chapter05-54.jpgPavent:该视图最终从属的父视图。

此方法返回指定位置相应的子视图。

(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)。

参数含义如下。

978-7-111-58810-8-Chapter05-55.jpggroupPosition:决定返回哪个视图的组位置。

978-7-111-58810-8-Chapter05-56.jpgisExpanded:该组是展开状态还是收起状态。

978-7-111-58810-8-Chapter05-57.jpgconvertView:如果可能,重用旧的视图对象。使用前要保证视图对象为非空,并且是合适的类型。如果该对象不能转换为可以正确显示数据的视图,该方法将创建新视图,不保证使用先前由getGroupView(int,boolean,View,ViewGroup)创建的视图。

978-7-111-58810-8-Chapter05-58.jpgparent:该视图最终从属的父视图。

此方法返回指定位置相应的组视图。

(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为分组中子视图的位置。此方法返回是否子视图可选择。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈