【IT168 技术】
一、结构
public abstract class BaseExpandableListAdapter extends Object
implements ExpandableListAdapter, 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 boolean areAllItemsEnabled ()
是否启用所有元素。
public int getChildType (int groupPosition, int childPosition)
获取由getChildView(int, int, boolean, View, ViewGroup)方法创建的指定子元素类型。
参数
groupPosition 子元素所在的组位置
childPosition 子元素所在的位置
返回值
0表示任意一个子元素类型,因此此时应当只声明一种子元素类型。
public int getChildTypeCount()
获取由getChildView(int, int, boolean, View, ViewGroup)创建的所有子元素类型个数。每种类型表示一个能被getChildView(int, int, boolean, View, ViewGroup)转换的(任意组中的)View集合。如果适配器总是从所有的子元素中返回同一种类型,本方法将返回1。
本方法将仅仅在AdapterView设置适配器时被调用。
返回值
BaseExpandableListAdapter默认返回1。
public long getCombinedChildId (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 long getCombinedGroupId (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 int getGroupType (int groupPosition)
获得由getGroupView(int, boolean, View, ViewGroup)方法创建的组元素类型。为设置的组元素。
参数
groupPosition 应返回类型所在组的位置
返回
0表示任意组位置,因此此时应当只申明了一种组类型。
public int getGroupTypeCount ()
返回由getGroupView(int, boolean, View, ViewGroup)方法创建的组视图类型个数。每个类型表示一个能被getGroupView(int, boolean, View, ViewGroup)转换的View集合。如果适配器总是返回同一种组类型,则此时本方法将返回1.
本方法将仅当适配器被AdapterView设置时调用。
返回
BaseExpandableListAdapter默认返回1.
public boolean isEmpty ()
(译者注:如果适配器没有任何数据,返回真。参见Adapter)
public void notifyDataSetChanged ()
(译者注:当后台数据集发生改变时,调用此方法响应数据集的更改。)
参见
notifyChanged()
public void notifyDataSetInvalidated ()
(译者注:当后台数据集不被验证的时候,调用此方法。)
参见
notifyInvalidated()
public void onGroupCollapsed (int groupPosition)
当组折叠的时候被调用。
参数
groupPosition 要折叠的组所在位置
public void onGroupExpanded (int groupPosition)
当组展开的时候被调用。
参数
groupPosition 要折叠的组所在位置
public void registerDataSetObserver (DataSetObserver observer)
(译者注:注册当用该适配器修改数据时调用的观察器。)
public void unregisterDataSetObserver (DataSetObserver observer)
(译者注:注销之前通过 registerDataSetObserver(DataSetObserver) 方法注册到该适配器的观察器。)
四、补充
文章链接