ExpandableListActivity就是可扩展的list,单击某个item后,又可显示一个子list。它的数据通过绑定到ExpandableListAdapter或者ExpandableListAdapter的子类上。
1.在主(main.xml)布局文件中声明ExpandableListActivity控件:
<ExpandableListView android:id="@id/android:list" android:layout_width="fill_parent" android:layout_height="fill_parent"/>
2.在组(group.xml)布局文件中声明group样式:
<TextView android:id="@+id/group" android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingLeft="60px" android:paddingTop="10px" android:paddingBottom="10px" android:textSize="26sp" />
3.在子(child.xml)布局文件中声明子条目的样式:
<TextView android:id="@+id/subitem"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingLeft="60px"
android:paddingTop="10px"
android:paddingBottom="10px"
android:textSize="20sp" />
4.创建Activity,并继承ExpandableListActivity:
public class ExpandableListViewActivity extends ExpandableListActivity{}
5.为group创建数据:
//定义group的list
List<Map<String,String>> groups = new ArrayList<Map<String,String>>();
Map<String,String> group1 = new HashMap<String,String>();
group1.put("group", "第一组");
Map<String,String> group2 = new HashMap<String,String>();
group2.put("group", "第二组");
groups.add(group1);
groups.add(group2);
6.为child创建数据:
//定义group下的子条目
List<Map<String,String>> subItem1 = new ArrayList<Map<String,String>>();
Map<String,String> item11 = new HashMap<String, String>();
item11.put("item", "第一条");
Map<String,String> item12 = new HashMap<String,String>();
item12.put("item", "第二条");
subItem1.add(item11);
subItem1.add(item12);
List<Map<String,String>> subItem2 = new ArrayList<Map<String,String>>();
Map<String,String> item21 = new HashMap<String, String>();
item21.put("item", "第一条");
Map<String,String> item22 = new HashMap<String,String>();
item22.put("item", "第二条");
Map<String,String> item23 = new HashMap<String,String>();
item23.put("item", "第三条");
subItem2.add(item21);
subItem2.add(item22);
subItem2.add(item23);
List<List<Map<String,String>>> subItems = new ArrayList<List<Map<String,String>>>();
subItems.add(subItem1);
subItems.add(subItem2);
创建SimpleExpandableListAdapter的步骤
SimpleExpandableListAdapter s = new SimpleExpandableListAdapter(
this, groups, R.layout.group, new String[]{"group"},
new int[]{R.id.group},subItems, R.layout.subitem,
new String[]{"item"}, new int[]{R.id.subitem});
setListAdapter(s);
Adapter构造方法共有9个参数,分别为:(1)Context.(2)一级条目的数据(3)一级条目的布局(4)一级条目的key(5)一级条目的数据显示控件的id(6)二级条目的数据(7)二级条目的布局(8)二级条目数据的key(9)二级条目数据控件的id。
运行结果: