public abstract class SimpleExpandableListAdapter extends BaseExpandableListAdapter
android.widget.BaseExpandableListAdapter
android.widget.SimpleExpandableListAdapter
二、概述
一个使用Map存储组元素和子元素的静态数据,使用XML资源文件定义组元素和子元素View如何显示的简单适配器。你可以区分指定组元素返回的数据是List类型。在ArrayList中的每个实体对应ExpandalbeList中的一个组。实体中的Map列表包含了组下的每行数据。你也可以指定一个XML文件来定义用于在组元素的View的显示。此时Map中的键值将与指定的View(XML中定义的view id)对应起来。子元素的处理情况类似。注意当可折叠的深度若不只1层,返回的数据将被指定为List类型。首个List对应子元素中所代表的组,第二个List对应孙子元素在子元素组中的位置。Map亦将支持这样的特殊元素。(子元素嵌套组元素的情况)
(译者注:ExpandableList支持深度大于1的情况。在andorid自带的ApiDomos的例子中有这个的代码:App/View/ExpandableList3)。
public SimpleExpandableListAdapter(Contextcontext,List> groupData, int groupLayout,String[]groupFrom, int[] groupTo,List>> childData, int childLayout,String[]childFrom, int[] childTo)
构造函数
参数
context 与SimpleExpandableListAdapter关联的ExpandableListView的上下文。
groupData 一个Maps列表(List)。集合中的每个字典项与可折叠列表中的每个组元素一致。字典项提供了组元素包含的所有数据,并包含所有在”groupFrom”中指定的记录。
groupLayout 显示组元素的资源文件。该资源文件定义了如何显示组元素。该布局文件必须至少包括groupTo中所定义的View。(即groupTo中的View id数组必须都在该布局文件中找到)
groupFrom 一个键值列表。对应与组相关联的Map中的键值。
grouptTo 组View应当显示groupFrom参数中的所有列数据。这些数据应当都用TextView来显示。列表中的前N个View从前N个groupFrom参数获得列元素的数据。
childData 一个Map列表的列表。外部列表中的每个实体对应一个组(按照组的位置编号)。在内部列表的每个实体对应某个组的子元素(按照子元素的位置编号)。该Map对应了子元素的数据。(按照childFrom数组中的值编号)。该Map包含了每个子元素的数据,并且应当包括所有在childFrom中指定的实体。
childLayout 显示子元素的资源文件。该资源文件定义了如何显示子元素。布局文件至少应该包括所有在childTo中定义的View。(即childTo中的view id数组必须都在该布局文件中找到)
childFrom 定义显示子元素的列名。该列名与childData中的子元素属性(字典键值)对应。
childTo 子View应当显示childFrom参数中的所有列数据。这些数据应当都用TextView来显示。列表中的前N个View从前N个childFrom参数获得列元素的数据。
构造函数。
参数
context 与SimpleExpandableListAdapter关联的ExpandableListView的上下文。
groupData 一个Maps列表(List)。集合中的每个字典项与可折叠列表中的每个组元素一致。字典项提供了组元素包含的所有数据,并包含所有在”groupFrom”中指定的记录。
expandedGroupLayout 定义组展开时的View的XML资源布局。该布局文件应当至少包括所有在groupTo中所定义的View。(即groupTo中的View id数组必须都在该布局文件中找到)
collapasedGroupLayout 定义组折叠时的View的XML资源布局。该布局文件应当至少包括所有在groupTo中所定义的View。(即groupTo中的View id数组必须都在该布局文件中找到)
groupFrom 一个键值列表。对应与组相关联的Map中的键值。
grouptTo 组View应当显示groupFrom参数中的所有列数据。这些数据应当都用TextView来显示。列表中的前N个View从前N个groupFrom参数获得列元素的数据。
childData 一个Map列表的列表。外部列表中的每个实体对应一个组(按照组的位置编号)。在内部列表的每个实体对应某个组的子元素(按照子元素的位置编号)。该Map对应了子元素的数据。(按照childFrom数组中的值编号)。该Map包含了每个子元素的数据,并且应当包括所有在childFrom中指定的实体。
childLayout 显示子元素的资源文件。该资源文件定义了如何显示子元素。布局文件至少应该包括所有在childTo中定义的View。(即childTo中的view id数组必须都在该布局文件中找到)
childFrom 定义显示子元素的列名。该列名与childData中的子元素属性(字典键值)对应。
childTo 子View应当显示childFrom参数中的所有列数据。这些数据应当都用TextView来显示。列表中的前N个View从前N个childFrom参数获得列元素的数据。
构造函数。
参数
context 与SimpleExpandableListAdapter关联的ExpandableListView的上下文。
groupData 一个Maps列表(List)。集合中的每个字典项与可折叠列表中的每个组元素一致。字典项提供了组元素包含的所有数据,并包含所有在”groupFrom”中指定的记录。
expandedGroupLayout 定义组展开时的View的XML资源布局。该布局文件应当至少包括所有在groupTo中所定义的View。(即groupTo中的View id数组必须都在该布局文件中找到)
collapasedGroupLayout 定义组折叠时的View的XML资源布局。该布局文件应当至少包括所有在groupTo中所定义的View。(即groupTo中的View id数组必须都在该布局文件中找到)
groupFrom 一个键值列表。对应与组相关联的Map中的键值。
grouptTo 组View应当显示groupFrom参数中的所有列数据。这些数据应当都用TextView来显示。列表中的前N个View从前N个groupFrom参数获得列元素的数据。
childData 一个Map列表的列表。外部列表中的每个实体对应一个组(按照组的位置编号)。在内部列表的每个实体对应某个组的子元素(按照子元素的位置编号)。该Map对应了子元素的数据。(按照childFrom数组中的值编号)。该Map包含了每个子元素的数据,并且应当包括所有在childFrom中指定的实体。
childLayout 显示子元素的资源文件。该资源文件定义了如何显示子元素。布局文件至少应该包括所有在childTo中定义的View。(即childTo中的view id数组必须都在该布局文件中找到)
lastChildLayout 定义每组中最后一个子元素的View资源布局情况。该布局文件应当至少包括所有在childTo中所定义的View。(即childTo中的View id数组必须都在该布局文件中找到)
childFrom 定义显示子元素的列名。该列名与childData中的子元素属性(字典键值)对应。
childTo 子View应当显示childFrom参数中的所有列数据。这些数据应当都用TextView来显示。列表中的前N个View从前N个childFrom参数获得列元素的数据。
public Object getChild (int groupPosition, int childPosition)
(译者注:获取与在给定组给予孩子相关的数据。)
(译者注:获取子项)
(译者注:返回在指定Group的Child数目。)
(译者注:返回Group的总数目。)
(译者注:获取父项)
(译者注:是否让child获得焦点)
新建一个子元素View。
参数
isLastChild 该child是否是组中的最后一个元素
parent 新的View的最终父亲。
返回
新的子元素View对象。
新建一个组元素View。
参数
文章精选
- List> groupData = new ArrayList>();
- List>> childData = new ArrayList>>();
- for (int i = 0; i < 20; i++) {
- Map curGroupMap = new HashMap();
- groupData.add(curGroupMap);
- curGroupMap.put(NAME, “Group ” + i);
- curGroupMap.put(IS_EVEN, (i % 2 == 0) ? “This group is even” : “This group is odd”);
- List> children = new ArrayList>();
- for (int j = 0; j < 15; j++) {
- Map curChildMap = new HashMap();
- children.add(curChildMap);
- curChildMap.put(NAME, “Child ” + j);
- curChildMap.put(IS_EVEN, (j % 2 == 0) ? “This child is even” : “This child is odd”);
- }
- childData.add(children);
- }
- // Set up our adapter
- mAdapter = new SimpleExpandableListAdapter(
- this,
- groupData,
- android.R.layout.simple_expandable_list_item_1,
- new String[] { NAME, IS_EVEN },
- new int[] { android.R.id.text1, android.R.id.text2 },
- childData,
- android.R.layout.simple_expandable_list_item_2,
- new String[] { NAME, IS_EVEN },
- new int[] { android.R.id.text1, android.R.id.text2 }
- );
复制代码