activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical">
<ExpandableListView android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ffffff"
android:cacheColorHint="#00000000"
android:listSelector="#00000000"
></ExpandableListView>
</LinearLayout>
MainActivity.java
package com.example.expandablelistview;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.view.Gravity;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.AbsListView;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.AbsListView.LayoutParams;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置窗口为全屏
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
ExpandableListAdapter adapter=new BaseExpandableListAdapter() {
//设置组视图显示的图片,这里我们就用同一张图片代替了
int[] logos=new int[]{R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher};
//设置组视图显示的文字
String[] groupWords=new String[]{"奔驰","宝马","奥迪"};
//设置子视图显示的文字
String[][] childWords=new String[][]{
{"s600","s500","s350"},
{"523li","750li","760li"},
{"A4","A6","R8"}
};
//定义一个创建文本的方法
TextView getTextView(){
AbsListView.LayoutParams lp=new AbsListView.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, 64);
TextView textView=new TextView(MainActivity.this);
textView.setLayoutParams(lp);
textView.setGravity(Gravity.LEFT);
textView.setTextSize(20);
textView.setPadding(30, 20, 0, 0);
textView.setTextColor(Color.BLACK);
return textView;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
@Override
public boolean hasStableIds() {
return true;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
LinearLayout ll=new LinearLayout(MainActivity.this);
ll.setOrientation(LinearLayout.HORIZONTAL);
ImageView logo=new ImageView(MainActivity.this);
logo.setImageResource(logos[groupPosition]);
logo.setPadding(30, 0, 0, 0);
ll.addView(logo);
TextView text=getTextView();
text.setText(groupWords[groupPosition].toString());
ll.addView(text);
return ll;
}
@Override
public long getGroupId(int groupPosition) {
// TODO Auto-generated method stub
return groupPosition;
}
@Override
public int getGroupCount() {
// TODO Auto-generated method stub
return groupWords.length;
}
@Override
public Object getGroup(int groupPosition) {
// TODO Auto-generated method stub
return groupWords[groupPosition];
}
@Override
public int getChildrenCount(int groupPosition) {
// TODO Auto-generated method stub
return childWords[groupPosition].length;
}
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
LinearLayout ll=new LinearLayout(MainActivity.this);
ll.setOrientation(LinearLayout.HORIZONTAL);
TextView text=getTextView();
text.setText(childWords[groupPosition][childPosition].toString());
ll.addView(text);
return ll;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return childPosition;
}
@Override
public Object getChild(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return childWords[groupPosition][childPosition];
}
};
ExpandableListView listView=(ExpandableListView) super.findViewById(R.id.list);
listView.setAdapter(adapter);
}
}