android BaseExpandableListAdapter 二级菜单适配器
activity_main.xml
<RelativeLayout 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" >
<ExpandableListView
android:id="@+id/home_a_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/ll_title"
android:childDivider="#EEEEEE"
android:divider="#c8c7cc"
android:dividerHeight="1dp"
android:gravity="center"
android:groupIndicator="@null"
android:listSelector="#00000000" />
</RelativeLayout>
MainActivity
.java
package com.zcycjy.mobile.fragment;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ExpandableListView;
import android.widget.ExpandableListView.OnChildClickListener;
import android.widget.ExpandableListView.OnGroupExpandListener;
import com.zcycjy.mobile.R;
import com.zcycjy.mobile.adapter.ExpandableAdapter;
import com.zcycjy.mobile.entity.HomeType;
/**
* @author itps
*
*/
public class MainActivity extends Activity {
// 标题
private List<String> groupArray = new ArrayList<String>();
// 子标题
private List<List<HomeType>> childArray = new ArrayList<List<HomeType>>();
private ExpandableAdapter adapters;
private ExpandableListView expandableListView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getDatas(0);
initView();
}
private void initView() {
expandableListView = (ExpandableListView)findViewById(R.id.home_a_list);
adapters = new ExpandableAdapter(this, groupArray, childArray);
expandableListView.setAdapter(adapters);
expandableListView.setOnChildClickListener(new OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
// TODO Auto-generated method stub
HomeType ht = (HomeType) adapters.getChild(groupPosition,
childPosition);
return false;
}
});
expandableListView
.setOnGroupExpandListener(new OnGroupExpandListener() {
@Override
public void onGroupExpand(int groupPosition) {
for (int i = 0; i < groupArray.size(); i++) {
if (groupPosition != i) {
expandableListView.collapseGroup(i);
}
}
}
});
}
private void getDatas(int type) {
// 会计
groupArray.add("注册会计师");
List<HomeType> ta1 = new ArrayList<HomeType>();
ta1.add(new HomeType("会计", "000001"));
ta1.add(new HomeType("审计", "000002"));
ta1.add(new HomeType("财务成本管理", "000003"));
ta1.add(new HomeType("税法", "000004"));
ta1.add(new HomeType("经济法", "000005"));
ta1.add(new HomeType("公司战略与风险管理", "000006"));
groupArray.add("高级会计职称");
List<HomeType> ta2 = new ArrayList<HomeType>();
ta2.add(new HomeType("高级会计实务", "000011"));
groupArray.add("中级会计职称");
List<HomeType> ta3 = new ArrayList<HomeType>();
ta3.add(new HomeType("中级会计实务", "000021"));
ta3.add(new HomeType("中级经济法", "000022"));
ta3.add(new HomeType("中级财务管理", "000023"));
childArray.add(ta1);
childArray.add(ta2);
childArray.add(ta3);
}
}
ExpandableAdapter
.java
package com.zcycjy.mobile.adapter;
import java.util.List;
import com.zcycjy.mobile.entity.HomeType;
import android.app.Activity;
import android.graphics.Color;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseExpandableListAdapter;
import android.widget.TextView;
public class ExpandableAdapter extends BaseExpandableListAdapter {
private List<String> groupArray;
private List<List<HomeType>> childArray;
private Activity activity;
public ExpandableAdapter(Activity act, List<String> groupArray,
List<List<HomeType>> childArray) {
this.activity = act;
this.groupArray = groupArray;
this.childArray = childArray;
}
@Override
public Object getChild(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return childArray.get(groupPosition).get(childPosition);
}
@Override
public long getChildId(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return childPosition;
}
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
String string = childArray.get(groupPosition).get(childPosition)
.getTypeName();
return getGenericView(string, 1);
}
@Override
public int getChildrenCount(int groupPosition) {
// TODO Auto-generated method stub
return childArray == null ? 0 : childArray.get(groupPosition).size();
}
@Override
public Object getGroup(int groupPosition) {
// TODO Auto-generated method stub
return groupArray.get(groupPosition);
}
@Override
public int getGroupCount() {
// TODO Auto-generated method stub
return groupArray == null ? 0 : groupArray.size();
}
@Override
public long getGroupId(int groupPosition) {
// TODO Auto-generated method stub
return groupPosition;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
String string = groupArray.get(groupPosition);
return getGenericView(string, 0);
}
@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return true;
}
/**
* Children 's View
*
* @param string
* @return
*/
public TextView getGenericView(String string, int i) {
AbsListView.LayoutParams layoutParams = new AbsListView.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
TextView text = new TextView(activity);
text.setLayoutParams(layoutParams);
// Center the text vertically
text.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
// Set the text starting position
if (i == 1) {
text.setTextColor(Color.parseColor("#000000"));
text.setPadding(70, 10, 0, 10);
text.setText(string + " >>>");
} else {
text.setTextColor(Color.parseColor("#F39801"));
text.setPadding(40, 20, 0, 20);
text.setText(string + " ▼▼▼");
}
return text;
}
}