返回介绍

SimpleExpandableListAdapter

发布于 2025-03-09 17:00:33 字数 10629 浏览 0 评论 0 收藏 0

SimpleExpandableListAdapter

版本:Android 2.3 r1

结构

继承关系

public abstract class SimpleExpandableListAdapter extends BaseExpandableListAdapter

java.lang.Object

android.widget.BaseExpandableListAdapter

android.widget.SimpleExpandableListAdapter

类概述

一个使用 Map 存储组元素和子元素的静态数据,使用 XML 资源文件定义组元素和子元素 View 如何显示的简单适配器。你可以区分指定组元素返回的数据是 List<Map>类型。在 ArrayList 中的每个实体对应 ExpandalbeList 中的一个组。实体中的 Map 列表包含了组下的每行数据。你也可以指定一个 XML 文件来定义用于在组元素的 View 的显示。此时 Map 中的键值将与指定的 View(XML 中定义的 view id) 对应起来。子元素的处理情况类似。注意当可折叠的深度若不只 1 层,返回的数据将被指定为 List 类型。首个 List 对应子元素中所代表的组,第二个 List 对应孙子元素在子元素组中的位置。Map 亦将支持这样的特殊元素。(子元素嵌套组元素的情况)

(译者注:ExpandableList 支持深度大于 1 的情况。在 andorid 自带的 ApiDomos 的例子中有这个的代码:App/View/ExpandableList3)。

构造函数

public SimpleExpandableListAdapter (Context context, List<? extends Map<String, ?>> groupData, int groupLayout, String[] groupFrom, int[] groupTo, List<? extends List<? extends Map<String, ?>>> 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 参数获得列元素的数据。

public SimpleExpandableListAdapter (Context context, List<? extends Map<String, ?>> groupData, int expandedGroupLayout, int collapsedGroupLayout, String[] groupFrom, int[] groupTo, List<? extends List<? extends Map<String, ?>>> childData, int childLayout, String[] childFrom, int[] childTo)

构造函数。

参数

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 参数获得列元素的数据。

public SimpleExpandableListAdapter (Context context, List<? extends Map<String, ?>> groupData, int expandedGroupLayout, int collapsedGroupLayout, String[] groupFrom, int[] groupTo, List<? extends List<? extends Map<String, ?>>> childData, int childLayout, int lastChildLayout, String[] childFrom, int[] childTo)

构造函数。

参数

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)

public long getChildId (int groupPosition, int childPosition)

(译者注:获取与在给定组给予孩子相关的数据。)

public View getChildView (int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent)

(译者注:获取子项)

public int getChildrenCount (int groupPosition)

(译者注:返回在指定 Group 的 Child 数目。)

public Object getGroup (int groupPosition)

public int getGroupCount ()

(译者注:返回 Group 的总数目。)

public long getGroupId (int groupPosition)

public View getGroupView (int groupPosition, boolean isExpanded, View convertView, ViewGroup parent)

(译者注:获取父项)

public boolean hasStableIds ()

public boolean isChildSelectable (int groupPosition, int childPosition)

(译者注:是否让 child 获得焦点)

public View newChildView (boolean isLastChild, ViewGroup parent)

新建一个子元素 View。

参数

isLastChild 该 child 是否是组中的最后一个元素

parent 新的 View 的最终父亲。

返回

新的子元素 View 对象。

 

public View newGroupView (boolean isExpanded, ViewGroup parent)

新建一个组元素 View。

参数

isExpanded 该组元素是否当前处于折叠状态

parent 新 View 的最终父亲。

返回

新的组元素 View 对象。

补充

文章精选

ExpandableListActivity 和 SimpleExpandableListAdapter 的使用方法

Expandable lists [blogspot]

示例代码:

List<Map<String, String>> groupData = new ArrayList<Map<String, String>>();

List<List<Map<String, String>>> childData = new ArrayList<List<Map<String, String>>>();

for ( int i = 0; i < 20; i++) {

Map<String, String> curGroupMap = new HashMap<String, String>();

groupData.add(curGroupMap);

curGroupMap.put( NAME , "Group " + i);

curGroupMap.put( IS_EVEN , (i % 2 == 0) ? "This group is even" : "This group is odd");

List<Map<String, String>> children = new ArrayList<Map<String, String>>();

for ( int j = 0; j < 15; j++) {

Map<String, String> curChildMap = new HashMap<String, String>();

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 }

);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文