ExpandableListView又称可折叠listView 是android中可以实现下拉list的一个控件,具体的实现方法如下:
首先:在layout的xml文件中定义一个ExpandableListView
定义两个List,用来存放控件中mlist/child中的String
获取两个集合中的数据
然后是通过适配器进行赋值
private class ExpandableAdapter extends BaseExpandableListAdapter {
private List<String> oneList;
private List<List<String>> twoList;
private GroupHolder groupHolder;
private ItemHolder itemHolder;
public ExpandableAdapter(List<String> oneList,
List<List<String>> towList) {
this.oneList = oneList;
this.twoList = towList;
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return twoList.get(groupPosition).get(childPosition);
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = getLayoutInflater().inflate(R.layout.expa_itme,
null);
itemHolder = new ItemHolder();
itemHolder.et_view = (TextView) convertView
.findViewById(R.id.et_view);
convertView.setTag(itemHolder);
} else {
itemHolder = (ItemHolder) convertView.getTag();
}
itemHolder.et_view.setText(twoList.get(groupPosition).get(
childPosition));
return convertView;
}
@Override
public int getChildrenCount(int groupPosition) {
return twoList.get(groupPosition).size();
}
@Override
public Object getGroup(int groupPosition) {
return oneList.get(groupPosition);
}
@Override
public int getGroupCount() {
return oneList.size();
}
@Override
public long getGroupId(int groupPosition) {
return 0;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = getLayoutInflater().inflate(R.layout.expa_itme,
null);
groupHolder = new GroupHolder();
groupHolder.et_view = (TextView) convertView
.findViewById(R.id.et_view);
convertView.setTag(groupHolder);
} else {
groupHolder = (GroupHolder) convertView.getTag();
}
groupHolder.et_view.setText(oneList.get(groupPosition));
return convertView;
}
@Override
public boolean hasStableIds() {
return true;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}
class GroupHolder {
public TextView et_view;
}
class ItemHolder {
public TextView et_view;
}