这是ExpandableList的使用效果:
- /**对SimpleExpandableListAdapter参数的解释
- * 使用SimpleExpandableListAdapter显示ExpandableListView
- * 参数1.上下文对象Context
- * 参数2.一级条目目录集合
- * 参数3.一级条目对应的布局文件
- * 参数4.fromto,就是map中的key,指定要显示的对象
- * 参数5.与参数4对应,指定要显示在groups中的id
- * 参数6.二级条目目录集合
- * 参数7.二级条目对应的布局文件
- * 参数8.fromto,就是map中的key,指定要显示的对象
- * 参数9.与参数8对应,指定要显示在childs中的id
- */
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这个方法所需要的变量所决定