<span style="font-size:18px;">package com.qf.day09_expandablelistview03;
import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.ExpandableListView.OnChildClickListener;
import android.widget.ExpandableListView.OnGroupClickListener;
import android.widget.ExpandableListView.OnGroupCollapseListener;
import android.widget.ExpandableListView.OnGroupExpandListener;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private ExpandableListView expandableListView;
private String[] groupData = {"朋友","同学","同事"};
private String[][] childData ={{"马云","王健林","马化腾"},{"老马","老王","小马"},{"许中","光头","翠"}};
private MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
expandableListView = (ExpandableListView) findViewById(R.id.expandableListView);
adapter = new MyAdapter();
expandableListView.setAdapter(adapter);
//分组的点击事件
expandableListView.setOnGroupClickListener(new OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent, View v,
int groupPosition, long id) {
Toast.makeText(MainActivity.this, "==onGroupClick==", Toast.LENGTH_SHORT).show();
return false;
}
});
//子元素的点击事件
expandableListView.setOnChildClickListener(new OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "==onChildClick=="+childData[groupPosition][childPosition], Toast.LENGTH_SHORT).show();
return false;
}
});
//分组展开的监听
expandableListView.setOnGroupExpandListener(new OnGroupExpandListener() {
@Override
public void onGroupExpand(int groupPosition) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "==onGroupExpand==", Toast.LENGTH_SHORT).show();
}
});
//分组折叠的监听
expandableListView.setOnGroupCollapseListener(new OnGroupCollapseListener() {
@Override
public void onGroupCollapse(int groupPosition) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "==onGroupCollapse==", Toast.LENGTH_SHORT).show();
}
});
}
public class MyAdapter extends BaseExpandableListAdapter{
/**
* 获取分组的个数
*/
@Override
public int getGroupCount() {
// TODO Auto-generated method stub
return groupData.length;
}
/**
* 获取当前下标分组里的子元素的个数
*/
@Override
public int getChildrenCount(int groupPosition) {
// TODO Auto-generated method stub
return childData[groupPosition].length;
}
/**
* 获取当前下标分组的数据
*/
@Override
public Object getGroup(int groupPosition) {
// TODO Auto-generated method stub
return groupData[groupPosition];
}
/**
* 获取分组下标为groupPosition里子元素的下标为childPosition的数据
*/
@Override
public Object getChild(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return childData[groupPosition][childPosition];
}
/**
* 获取下标为groupPosition分组的id
*/
@Override
public long getGroupId(int groupPosition) {
// TODO Auto-generated method stub
return groupPosition;
}
/**
* 获取分组下标为groupPosition 里的子元素下标为childPosition元素的id
*/
@Override
public long getChildId(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return childPosition;
}
/**
* 底层设计
* 分组和子元素是否有稳定的id 底层的数据改变不会影响他们
*/
@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return false;
}
/**
* 分组的视图对象
* 参数1:分组的位置下标
* 参数2:当前分组是否展开
* 参数3:复用的视图
* 参数4:指明父控件 ExpandableListView
*/
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View view = LayoutInflater.from(MainActivity.this)
.inflate(R.layout.item_group, parent,false);
TextView tv = (TextView) view.findViewById(R.id.tv_item_group);
tv.setText(groupData[groupPosition]);
return view;
}
/**
* 子元素的视图
*
* 参数1:当前分组的下标
* 参数2:当前子元素的下标
* 参数3:是否是最后一个子元素视图
* 参数4:子元素复用视图
* 参数5:指明父控件 ExpandableListView
*/
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View view = LayoutInflater.from(MainActivity.this)
.inflate(R.layout.item_child, parent,false);
TextView tv = (TextView) view.findViewById(R.id.tv_item_child);
tv.setText(childData[groupPosition][childPosition]);
return view;
}
/**
* 子元素能否被点击 false不能被点击 true可以被点击
*/
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return true;
}
}
}
</span>