布局文件
javapackage com.example.expandablelist_test;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.app.ActionBar;import android.app.Fragment;import android.os.Bundle;import android.view.Gravity;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.ViewGroup;import android.widget.AbsListView;import android.widget.BaseAdapter;import android.widget.BaseExpandableListAdapter;import android.widget.ExpandableListView;import android.widget.ExpandableListView.OnChildClickListener;import android.widget.TextView;import android.widget.Toast;import android.os.Build;////如果使用ExpandableListView,需要子item响应一个事件,比如重新启动一个新的activity,需要满足下面的条件:////(1).修改Adapter返回值//覆写BaseExpandableListAdapter的isChildSelectable()的返回值为true;////(2).绑定监听器//调用ExpandableListView对象的setOnChildClickListener()方法,为其绑定监听器public class MainActivity extends Activity {private List group;// 定义数组private List<List> child;// 定义数组元素private ExpandableListView view;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);init();view = (ExpandableListView) findViewById(R.id.view);final ExpandableAdapter adapter = new ExpandableAdapter();view.setOnChildClickListener(new OnChildClickListener() {@Overridepublic boolean onChildClick(ExpandableListView parent, View v,int groupPosition, int childPosition, long id) {Toast.makeText(MainActivity.this,"U choose the name is "+ adapter.getChild(groupPosition, childPosition),Toast.LENGTH_SHORT).show();return true;}});view.setAdapter(adapter);}private void init() {group = new ArrayList();group.add("魏");group.add("蜀");group.add("吴");child = new ArrayList<List>();List child1 = new ArrayList();child1.add("夏侯惇");child1.add("甄姬");child1.add("许褚");child1.add("郭嘉");List child2 = new ArrayList();child2.add("关羽");child2.add("张飞");child2.add("刘备");child2.add("孔明");List child3 = new ArrayList();child3.add("周瑜");child3.add("鲁肃");child3.add("黄盖");child3.add("陆逊");child.add(child1);child.add(child2);child.add(child3);}private class ExpandableAdapter extends BaseExpandableListAdapter {@Overridepublic int getGroupCount() {return group.size();}@Overridepublic int getChildrenCount(int groupPosition) {return child.get(groupPosition).size();}@Overridepublic Object getGroup(int groupPosition) {return group.get(groupPosition);}@Overridepublic Object getChild(int groupPosition, int childPosition) {return child.get(groupPosition).get(childPosition);}@Overridepublic long getGroupId(int groupPosition) {return groupPosition;}@Overridepublic long getChildId(int groupPosition, int childPosition) {return childPosition;}@Overridepublic boolean hasStableIds() {return false;}@Overridepublic View getGroupView(int groupPosition, boolean isExpanded,View convertView, ViewGroup parent) {TextView view = null;if (convertView != null) {view = (TextView) convertView;view.setText(group.get(groupPosition));} else {view = createView(group.get(groupPosition));}return view;}private TextView createView(String string) {AbsListView.LayoutParams lp = new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 80);TextView view = new TextView(MainActivity.this);view.setLayoutParams(lp);view.setPadding(80, 0, 0, 0);view.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);view.setText(string);return view;}@Overridepublic View getChildView(int groupPosition, int childPosition,boolean isLastChild, View convertView, ViewGroup parent) {TextView view = null;if (convertView != null) {view = (TextView) convertView;view.setText(child.get(groupPosition).get(childPosition));} else {view = createView(child.get(groupPosition).get(childPosition));}return view;}@Overridepublic boolean isChildSelectable(int groupPosition, int childPosition) {return true;}}}