java.lang.Object | ||||||
↳ | android.view.View | |||||
↳ | android.view.ViewGroup | |||||
↳ | android.widget.AdapterView<T extends android.widget.Adapter> | |||||
↳ | android.widget.AbsListView | |||||
↳ | android.widget.ListView | |||||
↳ | android.widget.ExpandableListView |
样例:
布局:
<?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"
android:background="@drawable/home_bg"
>
<include layout="@layout/top_bar" />
<View
android:layout_width="fill_parent"
android:layout_height="1dip"
android:background="#FF789977"
/>
<ExpandableListView android:id="@+id/expandablelist"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:cacheColorHint="#00000000"
android:divider="@drawable/dotted_line"
android:layout_weight="1"
android:childIndicator="@drawable/pic"
/>
</LinearLayout>
类:
public class mActivity extends Activity {
private ListView list ;
private ExpandableListView expandlist;
private List<Map<String,Object> > items;
private String names[] = {"Rolling in the deep","Apologize","仙剑问情","依然爱你","涛声依旧","Wannable","为爱痴狂","洋葱"};
private String artists[]= {"Adele","Timbaland ","萧人凤","王力宏","李行亮","SpiceGirls","金志文","平安"};
private String times[] = {"03:49","2:00","4:13","4:06","5:57","3:20","2:36","2:36"};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main3);
expandlist = (ExpandableListView)findViewById(R.id.expandablelist);
/* prepareData();
list = (ListView)findViewById(R.id.list);
SimpleAdapter adapter = new SimpleAdapter(this,items,R.layout.item,
new String[]{"name","artist","time"}, new int[]{ R.id.musicName,R.id.artist,R.id.time});
list.setAdapter(adapter);*/
expandlist.setAdapter(adapter);
//设置item点击的监听器
expandlist.setOnChildClickListener(new OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
Toast.makeText(
mActivity.this,
"我点击了" + adapter.getChild(groupPosition, childPosition),
Toast.LENGTH_SHORT).show();
return false;
}
});
}
ExpandableListAdapter adapter = new BaseExpandableListAdapter(){
//设置组视图的图片
int[] logos = new int[] { R.drawable.liuhuan, R.drawable.jikejunyi,R.drawable.pic};
//设置组视图的显示文字
private String[] generalsTypes = new String[] { "刘欢", "吉克隽逸", "蔡依林" };
//子视图显示文字
private String[][] generals = new String[][] {
{ "凤凰于飞", "弯弯的月亮", "千万次的问", "从头再来" },
{ "彩色的黑", "Halo", "不要怕" },
{ "看我72变", "倒带", "舞娘" }
};
private String times[][] ={ {"2:36","4:06","3:25","2:56"},{"2:36","4:06","3:25"},{"2:36","4:06","3:25"}};
private String counts[] = {"58首","46首","70首"};
//子视图图片
public int[][] generallogos = new int[][] {
{ R.drawable.kafei, R.drawable.kafei,
R.drawable.kafei, R.drawable.kafei
},
{ R.drawable.kafei, R.drawable.kafei,
R.drawable.kafei} ,
{ R.drawable.kafei, R.drawable.kafei,
R.drawable.kafei
}
};
//自定义textview,用于显示文字信息
TextView getTextView() {
AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT, 64);
TextView textView = new TextView(
mActivity.this);
textView.setLayoutParams(lp);
textView.setGravity(Gravity.CENTER_VERTICAL);
textView.setPadding(66, 0, 0, 0);
textView.setTextSize(20);
textView.setTextColor(Color.BLACK);
return textView;
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return generals[groupPosition][childPosition];
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
LinearLayout ll = new LinearLayout( mActivity.this);
ll.setOrientation(0);
ImageView generallogo = new ImageView( mActivity.this);
generallogo.setImageResource(generallogos[groupPosition][childPosition]);
// ll.addView(generallogo);
TextView textView = getTextView();
textView.setText(getChild(groupPosition, childPosition).toString());
TextView timecount = getTextView();
AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
timecount.setGravity(Gravity.CENTER_VERTICAL|Gravity.RIGHT) ;
timecount.setLayoutParams(lp);
timecount.setText(times[groupPosition][childPosition]);
ll.addView(textView);
ll.addView(timecount);
return ll;
}
@Override
public int getChildrenCount(int groupPosition) {
return generals[groupPosition].length;
}
@Override
public Object getGroup(int groupPosition) {
return generalsTypes[groupPosition];
}
@Override
public int getGroupCount() {
return generalsTypes.length;
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
LinearLayout ll = new LinearLayout( mActivity.this);
ll.setOrientation(0);
// ImageView logo = new ImageView(mActivity.this);
// logo.setImageResource(logos[groupPosition]);
// logo.setMaxHeight(20);
// logo.setMaxWidth(20);
// logo.setPadding(50, 0, 0, 0);
// ll.addView(logo);
TextView textView = getTextView();
textView.setTextColor(Color.BLACK);
textView.setText(getGroup(groupPosition).toString());
TextView textViewcount = getTextView();
textViewcount.setGravity(Gravity.CENTER_VERTICAL|Gravity.RIGHT);
textViewcount.setPadding(0, 0, 3, 0);
// textViewcount.
textViewcount.setText(counts[groupPosition]);
AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
textViewcount.setLayoutParams(lp);
ll.addView(textView);
ll.addView(textViewcount);
return ll;
}
@Override
public boolean hasStableIds() {
return true;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
};
}
效果图: