博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android中文API(95)——SimpleExpandableListAdapter
阅读量:6263 次
发布时间:2019-06-22

本文共 6485 字,大约阅读时间需要 21 分钟。

正文

  一、结构

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        关联的的上下文。

                  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  getChild (int groupPosition, int childPosition)

 

public long getChildId (int groupPosition, int childPosition)

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

 

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

(译者注:获取子项)

 

public int getChildrenCount (int groupPosition)

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

 

public  getGroup (int groupPosition)

 

public int getGroupCount ()

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

 

public long getGroupId (int groupPosition)

 

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

(译者注:获取父项)

 

public boolean hasStableIds ()

 

public boolean isChildSelectable (int groupPosition, int childPosition)

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

 

public  newChildView (boolean isLastChild,  parent)

新建一个子元素View

        参数

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

            parent       新的View的最终父亲。

        返回

            新的子元素View对象。

 

public View newGroupView (boolean isExpanded, ViewGroup parent)

新建一个组元素View

        参数

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

            parent   View的最终父亲。

        返回

            新的组元素View对象。

 

  五、补充

 

      文章精选

          

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

 

本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582403,如需转载请自行联系原作者

你可能感兴趣的文章
linux lftp命令
查看>>
多继承同名隐藏举例
查看>>
sql server 数据库忘记sa账户密码/ 无管理员账户解决办法
查看>>
试玩 PHP 5.4 的新特性
查看>>
Word该值小于列表中的前一条目
查看>>
第九周项目7-趣味编程
查看>>
JavaScript 函数式编程中的 curry 实现
查看>>
21.4 windows_21_Library_use_DLL 动态库补充4
查看>>
查看Eclipse运行工程时使用的Command Line
查看>>
使用WinExec打开文件夹
查看>>
作业要求 20181009-9 每周例行报告
查看>>
Mininet添加iperfmulti功能
查看>>
jq删除标签中的元素
查看>>
从Hash Killer I、II、III论字符串哈希
查看>>
远程使用tomcat8的首页的管理工具
查看>>
打包zip下载
查看>>
js正则表达式
查看>>
带有WS-Security验证的webservice
查看>>
【模式匹配】更快的Boyer-Moore算法
查看>>
[xsy3343]程序锁
查看>>