效果图
ExpandablelistviewActivity.java
main.xml
group.xml
child.xml
![](http://dl.iteye.com/upload/attachment/562208/28d6113e-281d-3fa5-b341-ed3997e6c61f.png)
ExpandablelistviewActivity.java
package com.expandlistview2;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ExpandableListView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.SimpleExpandableListAdapter;
public class Expandlistview2Activity extends Activity {
ExpandableListView act;
List<Map<String,String>> groups;
List<List<Map<String,String>>> childs;
SimpleExpandableListAdapter sla;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
act = (ExpandableListView)findViewById(R.id.expandlist);
groups = new ArrayList<Map<String,String>>();
Map<String,String> group1 = new HashMap<String,String>();
group1.put("group", "group1");
Map<String,String> group2 = new HashMap<String,String>();
group2.put("group", "group2");
groups.add(group1);
groups.add(group2);
List<Map<String,String>> child1 = new ArrayList<Map<String,String>>();
Map<String,String> childData1 = new HashMap<String, String>();
childData1.put("child", "child1Data1");
Map<String,String> childData2 = new HashMap<String, String>();
childData2.put("child", "child1Data2");
child1.add(childData1);
child1.add(childData2);
List<Map<String,String>> child2 = new ArrayList<Map<String,String>>();
Map<String,String> child2Data1 = new HashMap<String, String>();
child2Data1.put("child", "child2Data1");
Map<String,String> child2Data2 = new HashMap<String, String>();
child2Data2.put("child", "child2Data2");
child2.add(child2Data1);
child2.add(child2Data2);
childs = new ArrayList<List<Map<String,String>>>();
childs.add(child1);
childs.add(child2);
//生成对象
//1.context
//2.一级条目数据
//3.用来设置一级条目样式的布局文件
//4.指定一级条目数据的Key
//5.指定一级条目数据显示的group控件id
//6.指定二级条目数据
//7.用来设置二级条目样式的布局文件
//8.指定二级条目数据的key
//9.指定二级条目数据显示的控件的id
sla = new SimpleExpandableListAdapter
(this, groups, R.layout.group, new String[]{"group"}, new int[]{R.id.groupId},
childs, R.layout.child, new String[]{"child"}, new int[]{R.id.childId});
act.setAdapter(sla);
System.out.println("act.getChildCount():"+act.getCount());;
for (int i = 0; i < sla.getGroupCount(); i++) {
System.out.println("i:"+i);
act.expandGroup(i);
}
//设置为null则去掉箭头
// act.setGroupIndicator(null);
//子节点的监听事件
act.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
public boolean onChildClick(ExpandableListView expandableListView, View view, int i, int i1, long l) {
System.out.println("i:"+i+" i1:"+i1+" l:"+l);
HashMap m = (HashMap) sla.getChild(i, i1);
System.out.println("m:"+m);
// String albumid = (String) m.get(NAME);
// Toast.makeText(Main.this, albumid, Toast.LENGTH_SHORT).show();
return false; //todo
}
});
//父节点的监听事件
act.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent, View v,
int groupPosition, long id) {
System.out.println("v:"+v);
return false;
}
});
}
public void expandClick(View v){
Map<String,String> group1 = new HashMap<String,String>();
group1.put("group", "group3");
groups.add(group1);
List<Map<String,String>> child1 = new ArrayList<Map<String,String>>();
Map<String,String> childData1 = new HashMap<String, String>();
childData1.put("child", "child3Data1");
Map<String,String> childData2 = new HashMap<String, String>();
childData2.put("child", "child3Data2");
child1.add(childData1);
child1.add(childData2);
childs.add(child1);
Map<String,String> childData = new HashMap<String, String>();
childData.put("child", "child1Data22");
childs.get(1).add(childData);
sla.notifyDataSetChanged();
System.out.println("===:"+sla.getGroupCount());
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <ExpandableListView android:id="@id/android:list" android:layout_height="fill_parent" android:layout_width="fill_parent" android:drawSelectorOnTop="false" ></ExpandableListView> </LinearLayout>
group.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_height="50px" android:layout_width="fill_parent" android:id="@+id/groupId" android:paddingLeft="50dip" android:text="TextView" android:gravity="fill_vertical"></TextView> </LinearLayout>
child.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_height="wrap_content" android:layout_width="match_parent" android:id="@+id/childId" android:paddingLeft="80px" android:paddingTop="5px" android:paddingBottom="5px" android:text="TextView"></TextView> </LinearLayout>