Android中文API(95)——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 )。

三、构造函数          

    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 }
                );
  本文转自博客园农民伯伯的博客,原文链接:Android中文API(95)——SimpleExpandableListAdapter,如需转载请自行联系原博主。
目录
相关文章
|
Android开发
Android 11 修改libcore update-api 遇到的问题
Android 11 修改libcore update-api 遇到的问题
355 1
|
定位技术 API 开发工具
Android 按照步骤接入百度地图API,定位显示不了解决办法
Android 按照步骤接入百度地图API,定位显示不了解决办法
517 1
|
9月前
|
编译器 API Android开发
Android经典实战之Kotlin Multiplatform 中,如何处理不同平台的 API 调用
本文介绍Kotlin Multiplatform (KMP) 中使用 `expect` 和 `actual` 关键字处理多平台API调用的方法。通过共通代码集定义预期API,各平台提供具体实现,编译器确保正确匹配,支持依赖注入、枚举类处理等,实现跨平台代码重用与原生性能。附带示例展示如何定义跨平台函数与类。
254 0
|
11月前
|
API Android开发 开发者
`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView
【6月更文挑战第26天】`RecyclerView`是Android API 21引入的UI组件,用于替代ListView和GridView。它提供高效的数据视图复用,优化的布局管理,支持多种布局(如线性、网格),并解耦数据、适配器和视图。RecyclerView的灵活性、性能(如局部刷新和动画支持)和扩展性使其成为现代Android开发的首选,特别是在处理大规模数据集时。
149 2
|
SQL API Android开发
Android API:Activity.managedQuery()
Android API:Activity.managedQuery()
78 2
|
11月前
|
Java Linux API
微信API:探究Android平台下Hook技术的比较与应用场景分析
微信API:探究Android平台下Hook技术的比较与应用场景分析
|
API Android开发
Android Framework增加API 报错 Missing nullability on parameter
Android Framework增加API 报错 Missing nullability on parameter
491 1
|
API 定位技术 开发工具
Android Studio2021.1.1 高德地图api调用这一篇就够了
Android Studio2021.1.1 高德地图api调用这一篇就够了
|
API Android开发
对于应用研发平台EMAS中安卓 API 32 收不到 FCM 推送的问题
对于应用研发平台EMAS中安卓 API 32 收不到 FCM 推送的问题
142 3
|
API Android开发
mPaaS(移动跨平台框架)目前已经支持了Android API级别21
mPaaS(移动跨平台框架)目前已经支持了Android API级别21
191 2

热门文章

最新文章