Android 中文 API (93) —— BaseExpandableListAdapter
正文 一、结构 public abstract classBaseExpandableListAdapter extendsObject implementsExpandableListAdapter,HeterogeneousExpandableList java.lang.Object android.widget.BaseExpandableListAdapter 直接子类 CursorTreeAdapter,SimpleExpandableListAdapter 间接子类 ResourceCursorTreeAdapter,SimpleCursorTreeAdapter 二、概述 BaseExpandableListAdapter是ExpandableListAdapter的抽象基类,从一些数据中提供数据和视图给可折叠列表视图。 所有继承本类的Adapters需要保证实现的getCombinedChildId(long, long)和getCombinedGroupId(long)方法能正确地从View组或View子元素的ID中生成唯一的ID号。 (译者注:组元素表示可折叠的列表项,子元素表示列表项展开后看到的多个子元素项。由于可折叠列表单纯寻找组元素和子元素的ID不是很方便,因此使用联合ID的方式来解决。于是有了getCombinedChildId()和getCombinedGroupId()方法。在andorid自带的ApiDomos的例子中有这个的代码:App/View/ExpandableList1)。 三、公共方法 public booleanareAllItemsEnabled() 是否启用所有元素。 public intgetChildType(int groupPosition, int childPosition) 获取由getChildView(int, int, boolean, View, ViewGroup)方法创建的指定子元素类型。 参数 groupPosition子元素所在的组位置 childPosition子元素所在的位置 返回值 0表示任意一个子元素类型,因此此时应当只声明一种子元素类型。 publicintgetChildTypeCount() 获取由getChildView(int, int, boolean, View, ViewGroup)创建的所有子元素类型个数。每种类型表示一个能被getChildView(int, int, boolean, View, ViewGroup)转换的(任意组中的)View集合。如果适配器总是从所有的子元素中返回同一种类型,本方法将返回1。 本方法将仅仅在AdapterView设置适配器时被调用。 返回值 BaseExpandableListAdapter默认返回1。 public longgetCombinedChildId(long groupId, long childId) 若你预见以下默认实现的IDs可能出现冲突,请重写本方法。 实现返回一个long型: *第0位:不管ID指向的是一个子元素(未设置)还是一个组(已设置),对于本方法bit值为1. *第1-31位:小于31位的组ID。 *第32-63位:小于32位的子元素ID。 从列表所有项(组或子项)中获得一个唯一的子ID号。可折叠列表要求每个元素(组或子项)在所有的子元素和组中有一个唯一的ID。本方法负责根据所给的子ID号和组ID号返回唯一的ID。此外,若hasStableIds()是true,那么必须要返回稳定的ID。 参数 groupID包含该子元素的组ID childID子元素的ID号 返回 列表所有项(组或子项)中唯一的(和可能稳定)的子元素ID号。 public longgetCombinedGroupId(long groupId) 若你预见以下默认实现产生IDs冲突的话,请重写本方法。 实现返回一个long型: *第0位:不管ID指向的是一个子元素(未设置)还是一个组(已设置),对于本方法bit值为1. *第1-31位:小于31位的组ID。 *第32-63位:小于32位的子元素ID。 从列表所有项(组或子项)中获得一个唯一的子ID号。可折叠列表要求每个元素(组或子项)在所有的子元素和组中有一个唯一的ID。本方法负责根据所给的子ID号和组ID号返回唯一的ID。此外,若hasStableIds()是true,那么必须要返回稳定的ID。 参数 groupID包含该子元素的组ID 返回 列表所有项(组或子项)中唯一的(和可能稳定)的子元素ID号。 public intgetGroupType(int groupPosition) 获得由getGroupView(int, boolean, View, ViewGroup)方法创建的组元素类型。为设置的组元素。 参数 groupPosition应返回类型所在组的位置 返回 0表示任意组位置,因此此时应当只申明了一种组类型。 public intgetGroupTypeCount() 返回由getGroupView(int, boolean, View, ViewGroup)方法创建的组视图类型个数。每个类型表示一个能被getGroupView(int, boolean, View, ViewGroup)转换的View集合。如果适配器总是返回同一种组类型,则此时本方法将返回1. 本方法将仅当适配器被AdapterView设置时调用。 返回 BaseExpandableListAdapter默认返回1. public booleanisEmpty() (译者注:如果适配器没有任何数据,返回真。参见Adapter) public voidnotifyDataSetChanged() (译者注:当后台数据集发生改变时,调用此方法响应数据集的更改。) 参见 notifyChanged() public voidnotifyDataSetInvalidated() (译者注:当后台数据集不被验证的时候,调用此方法。) 参见 notifyInvalidated() public voidonGroupCollapsed(int groupPosition) 当组折叠的时候被调用。 参数 groupPosition要折叠的组所在位置 public voidonGroupExpanded(int groupPosition) 当组展开的时候被调用。 参数 groupPosition要折叠的组所在位置 public voidregisterDataSetObserver(DataSetObserverobserver) (译者注:注册当用该适配器修改数据时调用的观察器。) public voidunregisterDataSetObserver(DataSetObserverobserver) (译者注:注销之前通过registerDataSetObserver(DataSetObserver)方法注册到该适配器的观察器。) 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582413,如需转载请自行联系原作者