Android中文API(95)——SimpleExpandableListAdapter

 

前言

  本章内容是android.widget.SimpleExpandableListAdapter,版本为Android 2.3 r1,翻译来自"天涯明月刀",欢迎大家访问他的博客:http://sd6733531.javaeye.com/,再次感谢"天涯明月刀" !期待你一起参与Android 中文API的翻译,联系我over140@gmail.com。

 

声明

  欢迎转载,但请保留文章原始出处:)

    博客园:http://www.cnblogs.com/

    Android中文翻译组:http://goo.gl/6vJQl

 

正文

  一、结构

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(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来显示。列表中的前NView从前NgroupFrom参数获得列元素的数据。

                  childData       一个Map列表的列表。外部列表中的每个实体对应一个组(按照组的位置编号)。在内部列表的每个实体对应某个组的子元素(按照子元素的位置编号)。该Map对应了子元素的数据。(按照childFrom数组中的值编号)。该Map包含了每个子元素的数据,并且应当包括所有在childFrom中指定的实体。

                  childLayout       显示子元素的资源文件。该资源文件定义了如何显示子元素。布局文件至少应该包括所有在childTo中定义的View(childTo中的view id数组必须都在该布局文件中找到)

                  childFrom        定义显示子元素的列名。该列名与childData中的子元素属性(字典键值)对应。

                  childTo      View应当显示childFrom参数中的所有列数据。这些数据应当都用TextView来显示。列表中的前NView从前NchildFrom参数获得列元素的数据。

 

   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          定义组展开时的ViewXML资源布局。该布局文件应当至少包括所有在groupTo中所定义的View(groupTo中的View id数组必须都在该布局文件中找到)

collapasedGroupLayout          定义组折叠时的ViewXML资源布局。该布局文件应当至少包括所有在groupTo中所定义的View(groupTo中的View id数组必须都在该布局文件中找到)

                  groupFrom       一个键值列表。对应与组相关联的Map中的键值。

                  grouptTo          View应当显示groupFrom参数中的所有列数据。这些数据应当都用TextView来显示。列表中的前NView从前NgroupFrom参数获得列元素的数据。

                  childData         一个Map列表的列表。外部列表中的每个实体对应一个组(按照组的位置编号)。在内部列表的每个实体对应某个组的子元素(按照子元素的位置编号)。该Map对应了子元素的数据。(按照childFrom数组中的值编号)。该Map包含了每个子元素的数据,并且应当包括所有在childFrom中指定的实体。

                  childLayout       显示子元素的资源文件。该资源文件定义了如何显示子元素。布局文件至少应该包括所有在childTo中定义的View(childTo中的view id数组必须都在该布局文件中找到)

                  childFrom        定义显示子元素的列名。该列名与childData中的子元素属性(字典键值)对应。

                  childTo      View应当显示childFrom参数中的所有列数据。这些数据应当都用TextView来显示。列表中的前NView从前NchildFrom参数获得列元素的数据。

          

    public SimpleExpandableListAdapter(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   定义组展开时的ViewXML资源布局。该布局文件应当至少包括所有在groupTo中所定义的View(groupTo中的View id数组必须都在该布局文件中找到)

         collapasedGroupLayout   定义组折叠时的ViewXML资源布局。该布局文件应当至少包括所有在groupTo中所定义的View(groupTo中的View id数组必须都在该布局文件中找到)

                    groupFrom      一个键值列表。对应与组相关联的Map中的键值。

                    grouptTo   组View应当显示groupFrom参数中的所有列数据。这些数据应当都用TextView来显示。列表中的前NView从前NgroupFrom参数获得列元素的数据。

                    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来显示。列表中的前NView从前NchildFrom参数获得列元素的数据。


  四、公共方法

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)

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

 

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对象。

 

  五、补充

      文章精选

          ExpandableListActivitySimpleExpandableListAdapter的使用方法

          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 }
                );


 

 

posted @ 2011-01-24 01:18  农民伯伯  阅读(5938)  评论(0编辑  收藏  举报