Android之ExpandableList使用

这是ExpandableList的使用效果:




  1.  /**对SimpleExpandableListAdapter参数的解释
  2.           * 使用SimpleExpandableListAdapter显示ExpandableListView
  3.           * 参数1.上下文对象Context
  4.           * 参数2.一级条目目录集合
  5.           * 参数3.一级条目对应的布局文件
  6.           * 参数4.fromto,就是map中的key,指定要显示的对象
  7.           * 参数5.与参数4对应,指定要显示在groups中的id
  8.           * 参数6.二级条目目录集合
  9.           * 参数7.二级条目对应的布局文件
  10.           * 参数8.fromto,就是map中的key,指定要显示的对象
  11.           * 参数9.与参数8对应,指定要显示在childs中的id
  12.           */

    1.首先需要创建3个layout文件,以下是第一个layout的参考,这是显示在界面上的界面布局文件
     <?xml version="1.0" encoding="UTF-8"?>
     
    <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
             
    android:orientation="vertical"
             
    android:layout_width="match_parent"
             
    android:layout_height="match_parent"
             
    android:paddingLeft="8dp"
             
    android:paddingRight="8dp">
     
         
    <ExpandableListViewandroid:id="@id/android:list"
                   
    android:layout_width="match_parent"
                   
    android:layout_height="match_parent"
                   
    android:background="#00FF00"
                   
    android:layout_weight="1"
                   
    android:drawSelectorOnTop="false"/>
     
         
    <TextViewandroid:id="@id/android:empty"
                   
    android:layout_width="match_parent"
                   
    android:layout_height="match_parent"
                   
    android:background="#FF0000"
                   
    android:text="No data"/>
     
    </LinearLayout>


    2.第二个布局文件是Group的layout文件,第三个是Child的layout文件
    3.这是ExpandableListActivity的代码

    //组
    List<Map<String,String>> listGroup = new ArrayList<Map<String,String>>();
    Map<String,String> listGroupMap = new HashMap<String,String>();
    listGroupMap.put("国家", "英超联赛");
    Map<String,String> listGroupMap1 = new HashMap<String,String>();
    listGroupMap1.put("国家", "西班牙联赛");
    Map<String,String> listGroupMap2 = new HashMap<String,String>();
    listGroupMap2.put("国家", "意大利联赛");
    listGroup.add(listGroupMap);
    listGroup.add(listGroupMap1);
    listGroup.add(listGroupMap2);

    //子 List<? extends List<? extends Map<String, ?>>>
    List<List<Map<String,String>>> listChild = new ArrayList<List<Map<String,String>>>();
    List<Map<String,String>> list1 = new ArrayList<Map<String,String>>();
    Map<String,String> map1 = new HashMap<String,String>();
    Map<String,String> map2 = new HashMap<String,String>();
    Map<String,String> map3 = new HashMap<String,String>();
    map1.put("球队", "曼联");
    map2.put("球队", "利物浦");
    map3.put("球队", "阿森纳");
    list1.add(map1);
    list1.add(map2);
    list1.add(map3);

    List<Map<String,String>> list2 = new ArrayList<Map<String,String>>();
    Map<String,String> map4 = new HashMap<String,String>();
    Map<String,String> map5 = new HashMap<String,String>();
    map4.put("球队", "皇马");
    map5.put("球队", "巴塞罗那");
    list2.add(map4);
    list2.add(map5);

    List<Map<String,String>> list3 = new ArrayList<Map<String,String>>();
    Map<String,String> map6 = new HashMap<String,String>();
    Map<String,String> map7 = new HashMap<String,String>();
    map6.put("球队", "罗马");
    map7.put("球队", "AC米兰");
    list3.add(map6);
    list3.add(map7);

    listChild.add(list1);
    listChild.add(list2);
    listChild.add(list3);

    ExpandableListTest.this.setListAdapter(new SimpleExpandableListAdapter(this, listGroup, R.layout.group_layout,
    new String[]{"国家"}, new int[]{R.id.text1}, listChild, R.layout.child_layout, new String[]{"球队"},
    new int[]{R.id.text2}));

     
    ***至于为什么需要如此创建各种泛型,是由于 SimpleExpandableListAdapter这个方法所需要的变量所决定
原文地址:https://www.cnblogs.com/lee0oo0/p/2417537.html