zoukankan      html  css  js  c++  java
  • 【转】实现展开列ExpandableListView的三种方式之SimpleExpandableListAdapter实例

    原文网址:http://blog.csdn.net/x605940745/article/details/12099709

    实现可扩展展开列ExpandableListView的三种方式 

      欢迎加入QQ交流3群:317874559

     一是使用SimpleExpandableListAdpater将两个List集合包装成ExpandableListView
     二是 扩展BaseExpandableListAdpter

     三是使用simpleCursorTreeAdapter将Cursor中的数据包装成SimpleCuroTreeAdapter

    SimpleExpandableListAdpater的几个构造函数说明

    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)

           第一个参数  应用程序接口 this
           第二个父列List<?extends Map<String,Object>>集合 为父列提供数据
           第三个参数  父列显示的组件资源文件
           第四个参数  键值列表 父列Map字典的key
           第五个要显示的父列组件id
           第六个 子列的显示资源文件
           第七个参数 键值列表的子列Map字典的key
           第八个要显示子列的组件id

    [html] view plain copy
     
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    3.     android:layout_width="wrap_content"  
    4.     android:layout_height="wrap_content"  
    5.     android:orientation="horizontal" >  
    6.   
    7.     <ImageView  
    8.         android:id="@+id/image1"  
    9.         android:layout_width="wrap_content"  
    10.         android:layout_height="wrap_content" />  
    11.   
    12.     <TextView  
    13.         android:id="@+id/txt1"  
    14.        android:paddingLeft="10dp"  
    15.         android:layout_width="wrap_content"  
    16.         android:layout_height="wrap_content" />  
    17.   
    18. </LinearLayout>  
    [html] view plain copy
     
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <TextView xmlns:android="http://schemas.android.com/apk/res/android"  
    3.     android:id="@+id/items"  
    4.     android:layout_width="wrap_content"  
    5.     android:layout_height="wrap_content" >  
    6.       
    7.   
    8. </TextView>  
    [java] view plain copy
     
    1. package com.android.xiong.expandablelistviewtest;  
    2.   
    3. import java.util.ArrayList;  
    4. import java.util.HashMap;  
    5. import java.util.List;  
    6. import java.util.Map;  
    7.   
    8. import android.app.Activity;  
    9. import android.os.Bundle;  
    10. import android.view.Menu;  
    11. import android.widget.ExpandableListView;  
    12. import android.widget.SimpleExpandableListAdapter;  
    13.   
    14. public class MainActivity extends Activity {  
    15.   
    16.     /** 
    17.      * 实现可扩展展开列ExpandableListView的三种方式  
    18.      * 一是使用SimpleExpandableListAdpater将两个List集合包装成ExpandableListView 
    19.      * 二是 扩展BaseExpandableListAdpter 
    20.      *  三是使用simpleCursorTreeAdapter将Cursor中的数据包装成SimpleCuroTreeAdapter 
    21.      */  
    22.   
    23.     private int[] images = { R.drawable.one, R.drawable.two, R.drawable.threee };  
    24.     private String[] names = { "腾讯", "百度", "阿里巴巴" };  
    25.   
    26.     private String[][] childnames = { { "QQ", "微信", "手机卫士" },  
    27.             { "百度地图", "百度视频", "PPS&奇艺" }, { "支付宝", "新郎微博", "高德地图" } };  
    28.   
    29.     private ExpandableListView ep;  
    30.   
    31.     @Override  
    32.     protected void onCreate(Bundle savedInstanceState) {  
    33.         super.onCreate(savedInstanceState);  
    34.         setContentView(R.layout.activity_main);  
    35.           
    36.         //定义父列表项List数据集合  
    37.         List<Map<String, String>> group = new ArrayList<Map<String, String>>();  
    38.         //定义子列表项List数据集合  
    39.         List<List<Map<String, String>>> ss = new ArrayList<List<Map<String, String>>>();  
    40.         for (int i = 0; i < names.length; i++) {  
    41.             //提供父列表的数据  
    42.             Map<String, String> maps = new HashMap<String, String>();  
    43.             // maps.put("images", images[i]);  
    44.             maps.put("names", names[i]);  
    45.             group.add(maps);  
    46.             //提供当前父列的子列数据  
    47.             List<Map<String, String>> child = new ArrayList<Map<String, String>>();  
    48.             for (int j = 0; j < names.length; j++) {  
    49.                 Map<String, String> mapsj = new HashMap<String, String>();  
    50.                 mapsj.put("tengxun", childnames[i][j]);  
    51.                 child.add(mapsj);  
    52.             }  
    53.             ss.add(child);  
    54.         }  
    55.         /** 
    56.          * 第一个参数  应用程序接口 this 
    57.          * 第二个父列List<?extends Map<String,Object>>集合 为父列提供数据 
    58.          * 第三个参数  父列显示的组件资源文件 
    59.          * 第四个参数  键值列表 父列Map字典的key 
    60.          * 第五个要显示的父列组件id 
    61.          * 第六个 子列的显示资源文件 
    62.          * 第七个参数 键值列表的子列Map字典的key 
    63.          * 第八个要显示子列的组件id 
    64.          */  
    65.         SimpleExpandableListAdapter expand = new SimpleExpandableListAdapter(  
    66.                 this, group, R.layout.images, new String[] { "names" },  
    67.                 new int[] { R.id.txt1 }, ss, R.layout.txtitem,  
    68.                 new String[] { "tengxun" }, new int[] { R.id.items });  
    69.         ep = (ExpandableListView) findViewById(R.id.ep1);  
    70.         ep.setAdapter(expand);  
    71.   
    72.     }  
    73.   
    74.     @Override  
    75.     public boolean onCreateOptionsMenu(Menu menu) {  
    76.         // Inflate the menu; this adds items to the action bar if it is present.  
    77.         getMenuInflater().inflate(R.menu.main, menu);  
    78.         return true;  
    79.     }  
    80.   
    81. }  

    下面附上网上其余几种构造函数的解释

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

  • 相关阅读:
    【JAVA编码专题】JAVA字符编码系列一:Unicode,GBK,GB2312,UTF-8概念基础
    读取Webpage表中的内容
    各种排序算法的分析及java实现
    运行一个Hadoop Job所需要指定的属性
    Hbase常见异常
    Gora官方文档之二:Gora对Map-Reduce的支持
    Linux 系统挂载数据盘
    Gora快速入门
    Gora官方范例
    在Eclipse中运行Nutch2.3
  • 原文地址:https://www.cnblogs.com/wi100sh/p/5282695.html
Copyright © 2011-2022 走看看