Android中多級列表可以使用ExpandableListView和SimpleExpandableListAdapter配合來實現,但是,SimpleExpandableListAdapter用起來挺麻煩的,不易理解,而且擴展性也不好,因此,自定義BaseExpandableListAdapter類的子類以及封裝相關的操作,用起來會更加直觀和方便,我把我設計的封裝貼出來供新手參考吧。
GroupList代碼下載
免費下載地址在 http://linux.linuxidc.com/
用戶名與密碼都是www.linuxidc.com
具體下載目錄在 /2013年資料/9月/25日/Android開發實踐:多級列表的封裝與應用
下載方法見 http://www.linuxidc.com/Linux/2013-07/87684.htm
首先上效果圖,如圖所示:
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());
}
}