package com.example.expandablelistview;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.os.Bundle;
import android.app.ExpandableListActivity;
import android.util.DisplayMetrics;
import android.view.View;
import android.widget.ExpandableListView;
import android.widget.SimpleExpandableListAdapter;
import android.widget.Toast;
public class MainActivity extends ExpandableListActivity {
List<Map<String, String>> gruops = new ArrayList<Map<String, String>>();
List<List<Map<String, String>>> childs = new ArrayList<List<Map<String, String>>>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addg(new String[]{"group1","group2"});
addc(new String[][]{{"test1","test2"},{"111","222","333"}});
SimpleExpandableListAdapter sela = new SimpleExpandableListAdapter(
this, gruops, R.drawable.groups, new String[] { "group" },
new int[] { R.id.textGroup }, childs, R.drawable.childs,
new String[] { "child" }, new int[] { R.id.textChild });
setListAdapter(sela);
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
getExpandableListView().setIndicatorBounds(dm.widthPixels, dm.widthPixels);
sela.notifyDataSetChanged();
}
private void addg(String[] c){
for (int i = 0; i < c.length; i++) {
Map<String, String> tmp = new HashMap<String, String>();
tmp.put("group",c[i]);
gruops.add(tmp);
}
}
private void addc(String[][] c){
for (int i = 0; i < c.length; i++) {
List<Map<String, String>> child = new ArrayList<Map<String, String>>();
for (int j = 0; j < c[i].length; j++) {
Map<String, String> tmp = new HashMap<String, String>();
tmp.put("child",c[i][j]);
child.add(tmp);
}
childs.add(child);
}
}
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
Toast.makeText(
MainActivity.this,"您选择了"
+ gruops.get(groupPosition).toString()
+ childs.get(groupPosition).get(childPosition)
.toString(), Toast.LENGTH_SHORT).show();
return super.onChildClick(parent, v, groupPosition, childPosition, id);
}
@Override
public boolean setSelectedChild(int groupPosition, int childPosition,
boolean shouldExpandGroup) {
return super.setSelectedChild(groupPosition, childPosition,
shouldExpandGroup);
}
@Override
public void setSelectedGroup(int groupPosition) {
super.setSelectedGroup(groupPosition);
}
}
布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ExpandableListView
android:id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
组布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textGroup"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingBottom="6px"
android:paddingLeft="80px"
android:paddingTop="6px"
android:text="No data"
android:textSize="25sp" />
</LinearLayout>
子项布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textChild"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingBottom="10px"
android:paddingLeft="100px"
android:paddingTop="10px"
android:text="No Data"
android:textSize="20sp" />
</LinearLayout>
变换图片:
<?xml version = "1.0" encoding = "utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/w2" android:state_expanded="true"/>
<item android:drawable="@drawable/w1"/>
</selector>
显示: