Android适配器之-----SimpleExpandableListAdapter

结构

继承关系

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

构造函数

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

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

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

公共方法

publicObjectgetChild(int groupPosition, int childPosition)

public long getChildId (int groupPosition, int childPosition)

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

publicView getChildView (int groupPosition, int childPosition, boolean isLastChild,ViewconvertView,ViewGroupparent)

(译者注:获取子项)

public int getChildrenCount (int groupPosition)

(译者注:返回在指定GroupChild数目。)

publicObject getGroup (int groupPosition)

public int getGroupCount ()

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

public long getGroupId (int groupPosition)

publicView getGroupView (int groupPosition, boolean isExpanded,ViewconvertView,ViewGroupparent)

(译者注:获取父项)

public boolean hasStableIds ()

public boolean isChildSelectable (int groupPosition, int childPosition)

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

publicView newChildView (boolean isLastChild,ViewGroupparent)

新建一个子元素View

        参数

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

            parent       新的View的最终父亲。

        返回

            新的子元素View对象。

publicViewnewGroupView(boolean isExpanded,ViewGroupparent)

新建一个组元素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 },

newint[] { android.R.id.text1, android.R.id.text2 },

                childData,

                android.R.layout.simple_expandable_list_item_2,

new String[] { NAME, IS_EVEN },

newint[] { android.R.id.text1, android.R.id.text2 }

                );

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值