先看效果~
<ignore_js_op>
也就是BaseExpandableListAdapter、AbsListView类的使用,就不多说了..大牛留情...
就两个类。
ExpandLabel:
- package com.yfz;
- import java.util.ArrayList;
- import java.util.List;
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.ViewGroup.LayoutParams;
- import android.widget.ExpandableListView;
- import android.widget.ViewFlipper;
- public class ExpandLabel extends Activity {
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- // 数据源
- //标题
- List<String> groupArray = new ArrayList<String>();
- //子标题
- List<List<String>> childArray = new ArrayList<List<String>>();
- groupArray.add("第一章");
- groupArray.add("第二章");
- List<String> tempArray01 = new ArrayList<String>();
- tempArray01.add("第1.1节");
- tempArray01.add("第1.2节");
- tempArray01.add("第1.3节");
- List<String> tempArray02 = new ArrayList<String>();
- tempArray02.add("第2.1节");
- tempArray02.add("第2.2节");
- tempArray02.add("第2.3节");
- childArray.add(tempArray01);
- childArray.add(tempArray02);
- ExpandableListView expandableListView = new ExpandableListView(this);
- ExpandableAdapter adapter = new ExpandableAdapter(this,groupArray,childArray);
- expandableListView.setAdapter(adapter);
- addContentView(expandableListView, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
- }
- }
树形菜单类,只要传两个List过来就可以直接使用了。groupArray:表示一级菜单childArray: 表示二级菜单 二级菜单相当于一个二维List,该List中存储的每个元素都是一个List。第一个元素对应一级菜单中第一个菜单的子项List,第二个元素对应一级菜单中第二个菜单的子项List,依次类推。ExpandableAdapter:
- package com.yfz;
- import java.util.ArrayList;
- import java.util.List;
- import android.app.Activity;
- 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<String>> childArray;
- private Activity activity;
- public ExpandableAdapter(Activity a,List<String> groupArray,List<List<String>> childArray) {
- activity = a;
- 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);
- return getGenericView(string);
- }
- @Override
- public int getChildrenCount(int groupPosition) {
- // TODO Auto-generated method stub
- return 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.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);
- }
- @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 false;
- }
- /****************************************以下为自定义方法*********************************************/
- /**
- * Children 's View
- * @param string
- * @return
- */
- public TextView getGenericView(String string) {
- AbsListView.LayoutParams layoutParams = new AbsListView.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, 64);
- TextView text = new TextView(activity);
- text.setLayoutParams(layoutParams);
- // Center the text vertically
- text.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
- // Set the text starting position
- text.setPadding(36, 0, 0, 0);
- text.setText(string);
- return text;
- }
- }