先看下效果
ExpandableListView 和LiseView类似,继承自extends ListView,布局:
<ExpandableListView
android:id="@+id/elv"
android:layout_width="match_parent"
android:layout_height="match_parent"/>也需要Adapter,但是ExpandableListView 的Adapter为BaseExpandableListAdapter:public class MyExpandAdapter extends BaseExpandableListAdapter {
private Context mContext;
public MyExpandAdapter(Context context) {
this.mContext = context;
}
// 获取组的数量
@Override
public int getGroupCount() {
return 10;
}
// 获取某一组的子条目数量
@Override
public int getChildrenCount(int groupPosition) {
return 3;
}
// 获取组对应的对象
@Override
public Objects getGroup(int groupPosition) {
return null;
}
// 获取某一组的某个子条目对应的对象
@Override
public Object getChild(int groupPosition, int childPosition) {
return null;
}
// 获取组的View
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView,
ViewGroup parent) {
if(convertView == null) {
convertView = new TextView(mContext);
}
TextView tv = (TextView) convertView;
tv.setText("第"+groupPosition);
return convertView;
}
// 获取某一组的某个子条目的View
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild,
View convertView, ViewGroup parent) {
if(convertView == null) {
convertView = new TextView(mContext);
}
TextView tv = (TextView) convertView;
tv.setText("第"+groupPosition+"第"+childPosition);
return convertView;
}
// 某一组的某个子条目是否可点击
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
// -----
// 获取组的id
@Override
public long getGroupId(int groupPosition) {
return 0;
}
// 获取某一组的某个子条目的id
@Override
public long getChildId(int groupPosition, int childPosition) {
return 0;
}
// 当数据发生变化时, id是否不变
@Override
public boolean hasStableIds() {
return false;
}
}最后设置AdaptermElv = (ExpandableListView) findViewById(R.id.elv);
mElv.setAdapter(new MyExpandAdapter(this));
本文介绍了Android中ExpandableListView的使用方法,包括布局设置、Adapter创建及各方法的实现细节。
3822

被折叠的 条评论
为什么被折叠?



