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的美妙之處,4.最後畫龍點睛:我們可以通過繼承
delegateadapter.adapter
,建立乙個自定義的
adapter
,順帶配備對應的viewholder
即業務容器
;給這個
自定義adapter
的oncreatelayouthelper()
傳入
各種各樣
的不同型別
的不同構造形參
的layouthelper
,配合傳給
自定義adapter的資料支援引數位
,又可以實現
各種各樣的布局效果
;而這些個
各種各樣
的不同的布局
(adapterlist
),又可以加到同乙個
delegateadapter
中,借助
delegateadapter
、virtuallayoutmanager
,將
各種各樣
的這些個布局
,整到同乙個
recycleview
中!
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...