ExpandableListView简单实现二级列表

xml创建一个 ExpandableListView

<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"
    tools:context="${relativePackage}.${activityClass}" >
    <ExpandableListView 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/expandableListView">     
    </ExpandableListView>

</RelativeLayout>

ExpandableListView的一级列表布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="80dp"
    android:orientation="vertical" >  
    <TextView 
        android:id="@+id/one_name"
        android:layout_width="wrap_content"
  		android:layout_height="40dp"
        android:layout_centerInParent="true"
        android:textSize="20sp"
        android:text="我是一级列表"/>

</RelativeLayout>

ExpandableListView的二级列表布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:orientation="horizontal" >
    
    <ImageView 
        android:id="@+id/img"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:src="@drawable/ic_launcher"/>
    <TextView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tow_name"
        android:layout_marginTop="20dp"
        android:layout_marginLeft="20dp"
        android:text="嘻嘻哈哈"/>
</LinearLayout>

Java代码

package com.example.expandablelistview;

import java.util.ArrayList;
import java.util.List;

import android.R.string;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.TextView;

public class MainActivity extends Activity {
	private MainActivity.Madapder madapder;
	private ExpandableListView expandableListView;
	private List<String> allList;
	private List<List<Person>> list;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//获取控件
		expandableListView=(ExpandableListView) findViewById(R.id.expandableListView);
		//初始化数据
		initData();
		//自定义适配器
		madapder=new Madapder();
		expandableListView.setAdapter(madapder);
	}
	public void initData() {
		allList=new ArrayList<String>();
		allList.add("列表①");
		allList.add("列表②");
		allList.add("列表③");
		list=new ArrayList<List<Person>>();
		List<Person> list1=new ArrayList<Person>();
		list1.add(new Person("     虞姬"));
		list1.add(new Person("     甄姬"));
		list1.add(new Person("     阿狸"));
		list1.add(new Person("     狐狸"));
		List<Person> list2=new ArrayList<Person>();
		list2.add(new Person("     李白"));
		list2.add(new Person("     項羽"));
		list2.add(new Person("     荊軻"));
		list2.add(new Person("     曹操"));
		List<Person> list3=new ArrayList<Person>();
		list3.add(new Person("     公孙离"));
		list3.add(new Person("     孙尚香"));
		list3.add(new Person("     狄仁杰"));
		list3.add(new Person("     蔡文姬"));
		list.add(list1);
		list.add(list2);
		list.add(list3);
	}
	class Madapder extends BaseExpandableListAdapter{

		@Override
		public int getGroupCount() {
			// TODO Auto-generated method stub
			return allList.size();
		}

		@Override
		public int getChildrenCount(int groupPosition) {
			// TODO Auto-generated method stub
			return list.get(groupPosition).size();
		}

		@Override
		public Object getGroup(int groupPosition) {
			// TODO Auto-generated method stub
			return allList.get(groupPosition);
		}

		@Override
		public Object getChild(int groupPosition, int childPosition) {
			// TODO Auto-generated method stub
			return list.get(groupPosition).get(childPosition);
		}

		@Override
		public long getGroupId(int groupPosition) {
			// TODO Auto-generated method stub
			return groupPosition;
		}

		@Override
		public long getChildId(int groupPosition, int childPosition) {
			// TODO Auto-generated method stub
			return childPosition;
		}

		@Override
		public boolean hasStableIds() {
			// TODO Auto-generated method stub
			return true;
		}

		@Override
		public View getGroupView(int groupPosition, boolean isExpanded,
				View convertView, ViewGroup parent) {
			GroupView groupView;
			if(convertView==null){
				groupView=new GroupView();
				//获取一级列表的布局
				convertView=View.inflate(MainActivity.this,R.layout.item_1, null);
				//复用控件
				groupView.name=(TextView) convertView.findViewById(R.id.one_name);
				//绑定
				convertView.setTag(groupView);
			}else {
				groupView = (GroupView) convertView.getTag();
			}
			//给控件设置值
			groupView.name.setText(allList.get(groupPosition));
			return convertView;
		}
		@Override
		public View getChildView(int groupPosition, int childPosition,
				boolean isLastChild, View convertView, ViewGroup parent) {
			ViewHolder Holder;
			if(convertView==null){
				Holder=new ViewHolder();
				//获取二级列表的布局
				convertView=View.inflate(MainActivity.this,R.layout.item_2, null);
				//复用控件
				Holder.text_name=(TextView) convertView.findViewById(R.id.tow_name);
				//绑定
				convertView.setTag(Holder);
			}else {
				Holder = (ViewHolder) convertView.getTag();
			}
			//给控件设置值
			Holder.text_name.setText(list.get(groupPosition).get(childPosition).getName());
			return convertView;
		}

		@Override
		public boolean isChildSelectable(int groupPosition, int childPosition) {
			// TODO Auto-generated method stub
			return true;
		}	
	}
	class ViewHolder{
		TextView text_name;
	}
	class GroupView{
		TextView name;
	}
}

Java_封装类

package com.example.expandablelistview;

public class Person {
	String name;
	public Person() {
		// TODO Auto-generated constructor stub
	}
	public Person(String name) {
		super();
		this.name = name;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Override
	public String toString() {
		return "Person [name=" + name + "]";
	}
	
}

猜你喜欢

转载自blog.csdn.net/wangshuo_/article/details/84073728