歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android開發實踐:多級列表的封裝與應用

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());
    }
}

Copyright © Linux教程網 All Rights Reserved