Android中多级列表可以使用ExpandableListView和SimpleExpandableListAdapter配合来实现,但是,SimpleExpandableListAdapter用起来挺麻烦的,不易理解,而且扩展性也不好,因此,自定义BaseExpandableListAdapter类的子类以及封装相关的操作,用起来会更加直观和方便,我把我设计的封装贴出来供新手参考吧。
GroupList代码下载
具体下载目录在 /2013年资料/9月/25日/Android开发实践:多级列表的封装与应用
首先上效果图,如图所示:
1. 首先设计多级列表的标题类
就像文件和文件夹可以统一地用File类来抽象一样,多级列表的一级标题和二级标题其实也可以用同一个基类来抽象,因此,我设计了一个基类和两个子类,GroupList,GroupListChild 和 GroupListParent,其实现如下所示:
(1) GroupList 多级列表标题的抽象基类
public abstract class GroupList {
private final String mTitle;
public GroupList(String title) {
mTitle = title;
}
public String getTitle() {
return mTitle;
}
public abstract List<GroupList> getChild();
public abstract int getResource();
public abstract void buildView(View v);
}
(2) GroupListChild 多级列表二级标题子类
public class GroupListChild extends GroupList {
public GroupListChild(String title) {
super(title);
}
@Override
public int getResource() {
return R.layout.grouplist_child;
}
@Override
public List<GroupList> getChild() {
return null;
}
@Override
public void buildView(View v) {
TextView textView = (TextView)v.findViewById(R.id.GroupListChild);
textView.setText(getTitle());
}
}
(3) GroupListParent 多级列表一级标题子类
public class GroupListParent extends GroupList {
private List<GroupList> mPopListChilds;
public GroupListParent(String title,List<GroupList> childs) {
super(title);
mPopListChilds = childs;
}
@Override
public int getResource() {
return R.layout.grouplist_parent;
}
@Override
public List<GroupList> getChild() {
return mPopListChilds;
}
@Override
public void buildView(View v) {
TextView textView = (TextView)v.findViewById(R.id.GroupListParent);
textView.setText(getTitle());
}
}