废话不多说,我们直接进入主题了。
首先我们看看效果图:
下面我们就看看源码。首先是mian.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"
android:orientation="vertical"
>
<ExpandableListView
android:id="@+id/expandableListView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
></ExpandableListView>
</LinearLayout>
代码很简单就不做解释了,接下来我们看看Activity.java代码
package com.itheima.expandablelistviewone;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.AbsListView;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.TextView;
public class MainActivity extends Activity {
private List<String> groupArray;//组列表
private List<List<String>> childArray;//子列表
private ExpandableListView expandableListView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
expandableListView=(ExpandableListView)findViewById(R.id.expandableListView);
groupArray=new ArrayList<String>();
childArray=new ArrayList<List<String>>();
initdate();
expandableListView.setAdapter(new ExpandableListViewaAdapter(MainActivity.this));
}
class ExpandableListViewaAdapter extends BaseExpandableListAdapter{
Activity activity;
public ExpandableListViewaAdapter(Activity a){
activity=a;
}
@Override
public int getGroupCount() {
// TODO 自动生成的方法存根
return groupArray.size();
}
@Override
public int getChildrenCount(int groupPosition) {
// TODO 自动生成的方法存根
return childArray.get(groupPosition).size();
}
@Override
public Object getGroup(int groupPosition) {
// TODO 自动生成的方法存根
return getGroup(groupPosition);
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return childArray.get(groupPosition).get(childPosition);
}
@Override
public long getGroupId(int groupPosition) {
// TODO 自动生成的方法存根
return groupPosition;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
// TODO 自动生成的方法存根
return childPosition;
}
@Override
public boolean hasStableIds() {
// TODO 自动生成的方法存根
return false;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
String string=groupArray.get(groupPosition);
return getGenericView(string);
}
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
String string=childArray.get(groupPosition).get(childPosition);
return getGenericView(string);
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
// TODO 自动生成的方法存根
return true;
}
private TextView getGenericView(String string){
AbsListView.LayoutParams layoutParams=new AbsListView.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT
);
TextView textView=new TextView(activity);
textView.setLayoutParams(layoutParams);
textView.setGravity(Gravity.CENTER_VERTICAL|Gravity.LEFT);
textView.setPadding(40, 0, 0, 0);
textView.setText(string);
return textView;
}
}
private void initdate(){
addInfo("语言", new String[]{"Oracle","Java","Linux","Jquery"});
addInfo("男人的需求", new String[]{"金钱","事业","权力","女人","房子","车","球"});
}
private void addInfo(String group,String[] child){
groupArray.add(group);
List<String> childItem=new ArrayList<String>();
for(int index=0;index<child.length;index++){
childItem.add(child[index]);
}
childArray.add(childItem);
}
}
基本就是这样了,因为很简单就不做过多的解释,有什么不懂的,欢迎大家留言,咱们一起讨论。