国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

打造RecyclerView的n級列表

Baoyuan / 2821人閱讀

摘要:先上效果圖該多級列表的優(yōu)勢支持無限級列表展開基于一個實現(xiàn)可以自定義每一級的樣式,定制化更強設(shè)計的思路數(shù)據(jù)結(jié)構(gòu)類中有變量構(gòu)造整體的數(shù)據(jù)源因為本來就支持多個的布局,不清楚的可以看下這個方法,所以我們可以利用這個類,來區(qū)分不同級用不同的。

先上效果圖:

1.該多級列表的優(yōu)勢:

支持無限級列表展開

基于一個recyclerView實現(xiàn)

可以自定義每一級item的樣式,定制化更強

2.設(shè)計的思路

數(shù)據(jù)結(jié)構(gòu)List,ItemBean類中有變量List,構(gòu)造整體RecyclerView的數(shù)據(jù)源

因為RecyclerView.Adapter本來就支持多個type的item布局,不清楚的可以看下getItemViewType這個方法,所以我們可以利用這個類,來區(qū)分不同級用不同的Item。

將Item必須具備的方法放在一個Tree接口里面,以后自定義的類只需要繼承Tree接口就好了。

3.代碼分析
public abstract class BaseTreeRVAdapter extends BaseRVAdapterV2 {

    @Override
    public void onBindViewHolder(T holder, final int position) {
        try {
            getLevel(position, mDatas, new PosBean());
        } catch (StopMsgException ex) {
            int type = Integer.parseInt(ex.getMessage());
            M tree = ex.getTree();
            onBindViewHolder(type, tree, holder);
        }
    }


    @Override
    public int getItemViewType(int position) {
        try {
            getLevel(position, mDatas, new PosBean());
        } catch (StopMsgException ex) {
            return Integer.parseInt(ex.getMessage());
        }
        return 0;
    }

    @Override
    public int getItemCount() {
        return getTotal(mDatas);
    }

    protected abstract void onBindViewHolder(int type, M tree, T holder);

    public List getDatas() {
        return mDatas;
    }

    public void setDatas(List info) {
        if (info != null) {
            mDatas = info;
        } else {
            mDatas.clear();
        }
        notifyDataSetChanged();
    }
}

注釋1:主要是計算當(dāng)前給的數(shù)據(jù)他的item個數(shù),會根據(jù)是否展開的狀態(tài)來統(tǒng)總個數(shù)

注釋2:計算當(dāng)前的postion對應(yīng)的item層級,來顯示對應(yīng)的item布局

4.對于自己需要實現(xiàn)的地方
public class TreeListAdapter extends BaseTreeRVAdapter {

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view;
        RecyclerView.ViewHolder vh;
        switch (viewType) {
            case 0:
                ......    
                break;
            case 1:
                ......
                break;
            case 2:
                ......
                break;
            case 3:
            case 4:
            ......
        }
        return vh;
    }


    @Override
    protected void onBindViewHolder(int type, final DiscountItem itemCategoryListBean, RecyclerView.ViewHolder holder) {
        switch (type) {
            case 0:
                ......
                break;
            case 1:
                ......
                break;
            case 2:
                ......
                break;
            case 3:
            case 4:
            ......
        }
    }
}

上面的泛型T就是我們的Item的class類型,所以自定義的class要想用這個adapter的話,都需要實現(xiàn)Tree接口

onBindViewHolder方法中形參的的type就是層級,比如說第一級type就是0,第二級是1,以此類推

5.另外自定義的類如果不需要extends的話,那么需要繼承wellijohn.org.treerecyclerview.vo.TreeItem,如果已經(jīng)寫了的話,那么就需要自己實現(xiàn)Tree接口。

必須實現(xiàn)的幾個方法:

    int getLevel();//每個item的層級,比如一級就是0,二級就返回1,這里的0和1可以自己定義,后面就是根據(jù)這個來選擇哪種樣式的item

    List getChilds();//返回的子列表,比如當(dāng)前類是一級的話,那么這個方法返回的是二級的列表數(shù)據(jù)

    boolean isExpand();//是否展開,true展開,false不展開,一般就是點擊下去修改這個值刷新adapter,就能達(dá)到展開還是折疊的目的了
6.引入方式
step 1.
Add it in your root build.gradle at the end of repositories:

    allprojects {
        repositories {
            ...
            maven { url "https://jitpack.io" }
        }
    }
Step 2. Add the dependency

    dependencies {
            implementation "com.github.WelliJohn:MultiLevelRecyclerView:0.0.1"
    }
7.demo示例

多級列表示例,如果覺得有用,還請點個贊。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/76800.html

相關(guān)文章

  • 【騰訊Bugly干貨分享】Android ListView與RecyclerView對比淺析--緩存

    摘要:數(shù)據(jù)源頻繁更新的場景,如彈幕等的優(yōu)勢會非常明顯進(jìn)一步來講,結(jié)論是列表頁展示界面,需要支持動畫,或者頻繁更新,局部刷新,建議使用,更加強大完善,易擴(kuò)展其它情況如微信卡包列表頁兩者都,但在使用上會更加方便,快捷。 本文來自于騰訊bugly開發(fā)者社區(qū),非經(jīng)作者同意,請勿轉(zhuǎn)載,原文地址:http://dev.qq.com/topic/5811d... 作者:黃寧源 一,背景 RecyclerV...

    wangzy2019 評論0 收藏0

發(fā)表評論

0條評論

Baoyuan

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<