vLayout學習筆記

2021-09-27 11:01:31 字數 3508 閱讀 9676

vlayout(virtuallayout)是阿里開源的乙個針對 recyclerview 的 layoutmanager 擴充套件,主要提供一整套布局方案和布局間的元件復用。

1.初始化recycleview,

基於上下文,初始化乙個virtuallayoutmanager;

recyclerview.setlayoutmanager(layoutmanager);
將這個virtuallayoutmanager設定進去recyclerview;

2.利用第一步的virtuallayoutmanager建立乙個delegateadapter ;

delegateadapter delegateadapter = new delegateadapter(layoutmanager, hasconsistitemtype);
3.1.

準備乙個adapter列表:

listadapterlist = new arraylist<>();
新增(add)各種adapter,

add的引數即自定義adapter,

這裡的自定義adapter是subadapter;(**來自官網demo)

adapterlist.add(new subadapter(new linearlayouthelper(20), 20));

adapterlist.add(new subadapter(new stickylayouthelper(true), 1));

adapterlist.add(new subadapter(new linearlayouthelper(20), 20));

adapterlist.add(new subadapter(new gridlayouthelper(4), 80));

// adapterlist.add(new subadapter(new fixlayouthelper(0, 0), 1));

adapterlist.add(new subadapter(new fixlayouthelper(top_right, 0, 0), 1));

3.2.

自定義adapter的設計:

注意,

自定義adapter繼承自delegateadapter.adapeter,

泛型可以是自定義的viewholder;

建構函式一般接收兩個引數,

layouthelper以及乙個資料引數(用於adapter的資料支援)

private static class subadapter extends delegateadapter.adapter

@override

public layouthelper oncreatelayouthelper()

@override

public subviewholder oncreateviewholder(viewgroup parent, int viewtype)

@override

public void onbindviewholder(subviewholder holder, int position)

@override

protected void onbindviewholderwithoffset(subviewholder holder, int position, int offsettotal)

@override

public int getitemcount()

}

對應的viewholder設計:

private static class subviewholder extends recyclerview.viewholder 

public void settext(string title)

@override

protected void finalize() throws throwable

}

以上,通過給,

繼承自delegateadapter.adapter自定義adapter

設定不同的layouthelper,實現了各種各樣的布局adapter

然後我們把這些各種各樣的布局adapter

加入到乙個listadapterlist中去,

接下來我們把這個adapterlist

設定到delegateadapter中去:

delegateadapter.addadapters(adapterlist);// 不加會 android.content.res.resources$notfoundexception: resource id!!!!

delegateadapter.addadapters(adapterlist);
這裡便是vlayout的美妙之處,

我們可以通過繼承delegateadapter.adapter

建立乙個自定義的adapter,順帶配備對應的viewholder業務容器

給這個自定義adapteroncreatelayouthelper()傳入

各種各樣不同型別不同構造形參layouthelper

配合傳給自定義adapter的資料支援引數位

又可以實現各種各樣的布局效果

而這些個各種各樣不同的布局adapterlist),

又可以加到同乙個delegateadapter中,

借助delegateadaptervirtuallayoutmanager

各種各樣這些個布局

整到同乙個recycleview中!

4.最後畫龍點睛:

recycler.setadapter(delegateadapter);

實戰demo的github位址

vlayout的簡單介紹

參考 alibaba vlayout github 中文文件 android開源庫v layout 天貓都在用的ui框架,趕緊用起來吧!android vlayout 全面解析 使用alibaba開源庫vlayout實現 首頁 如果一屏內相同型別的 view 個數比較多,需要設定乙個合適的大小,防止...

學習筆記 雜湊學習筆記

hash基本原理 hash就是乙個像函式一樣的東西,你放進去乙個值,它給你輸出來乙個值。輸出的值就是hash值。一般hash值會比原來的值更好儲存 更小 或比較。那字串hash就非常好理解了。就是把字串轉換成乙個整數的函式。而且要盡量做到使字串對應唯一的hash值。它的主要思路是選取恰當的進製,可以...

學習筆記 CentOS 學習筆記01

簡單的做個課堂筆記 虛擬機器用的是vmware,系統是centos cd etc sysconfig network scripts pwdls 顯示列表 cat ifcfg eth0 檢視檔案內容 vi ifcfg eth0 進入vi編輯器 onboot no 原始設定 x逐字刪除 d刪除整行 a...