vlayout的簡單介紹

2021-09-10 22:57:16 字數 3417 閱讀 3633

參考:

alibaba/vlayout github 中文文件

android開源庫v - layout:**、天貓都在用的ui框架,趕緊用起來吧!

android vlayout 全面解析

使用alibaba開源庫vlayout實現**首頁

如果一屏內相同型別的 view 個數比較多,需要設定乙個合適的大小,防止來回滾動時重新建立 view:

recyclerview.recycledviewpool viewpool = new recyclerview.recycledviewpool();

recyclerview.setrecycledviewpool(viewpool);

viewpool.setmaxrecycledviews(0, 10);

注意:上述示例**裡只針對type=0的item設定了復用池的大小,如果你的頁面有多種type,需要為每一種型別的分別調整復用池大小引數。

載入資料時有兩種方式 : delegateadapter 和 virtuallayoutadapter

使用 delegateadapter, 可以像平常一樣寫繼承自delegateadapter.adapter的adapter, 只比之前的adapter需要多過載oncreatelayouthelper方法。 其他的和預設adapter一樣。

delegateadapter delegateadapter = new delegateadapter(layoutmanager, hasconsistitemtype);

recycler.setadapter(delegateadapter);

// 之後可以通過 setadapters 或 addadapter方法新增delegateadapter.adapter

delegateadapter.setadapters(adapters);

// or

customadapter adapter = new customadapter(data, new gridlayouthelper());

delegateadapter.addadapter(adapter);

// 如果資料有變化,呼叫自定義 adapter 的 notifydatasetchanged()

adapter.notifydatasetchanged();

注意:

當hasconsistitemtype=true的時候,不論是不是屬於同乙個子adapter,相同型別的item都能復用。表示它們共享乙個型別。

當hasconsistitemtype=false的時候,不同子adapter之間的型別不共享

另一種是當業務有自定義的複雜需求的時候, 可以繼承自virtuallayoutadapter, 實現自己的adapter

public class myadapter extends virtuallayoutadapter 

myadapter myadapter = new myadapter(layoutmanager);

//構造 layouthelper 列表

listhelpers = new linkedlist<>();

gridlayouthelper gridlayouthelper = new gridlayouthelper(4);

gridlayouthelper.setitemcount(25);

helpers.add(gridlayouthelper);

gridlayouthelper gridlayouthelper2 = new gridlayouthelper(2);

gridlayouthelper2.setitemcount(25);

helpers.add(gridlayouthelper2);

//將 layouthelper 列表傳遞給 adapter

myadapter.setlayouthelpers(helpers);

//將 adapter 設定給 recyclerview

recycler.setadapter(myadapter);

在這種情況下,需要使用者注意在當layouthelpers的結構或者資料數量等會影響到布局的元素變化時,需要主動呼叫setlayouthelpers去更新布局模式。

layouthelper分類及關係

預設通用布局實現,解耦所有的view和布局之間的關係: linear, grid, 吸頂, 浮動, 固定位置等。

上述預設實現裡可以大致分為兩類:

一是非fix型別布局,像線性、grid、欄格等,它們的特點是布局在整個頁面流裡,隨頁面滾動而滾動;

另一類就是fix型別的布局,它們的子節點往往不隨頁面滾動而滾動。

mysql的簡單介紹 mysql的簡單介紹

mysql的簡單介紹 資料庫的內部鏈結 1 連線管理器 使用者或應用程式連線 2 分析器 3 快取區4 優化器 優化器執行的結果交由儲存引擎,再轉向物理層 表空間 myisam每個表有三個檔案 frm 表結構 myd 表資料 myi 表索引 innodb 所有表空間再乙個檔案 資料庫失敗的原因 1 ...

簡單的 介紹 樹形DP介紹

給定一棵有n個節點的樹 通常是無根樹,也就是有n 1條無向邊 我們可以任選乙個節點為根節點,從而定義出每個節點的深度和每棵子樹的根。在樹上設計動態規劃演算法時,一般就以節點從深到淺 子樹從小到大 的順序作為dp的 階段 dp的狀態表示中,第一維通常是節點編號 代表以該節點為根的子樹 大多數時候,我們...

ORACLE SEQUENCE的簡單介紹

在oracle中sequence就是所謂的序列號,每次取的時候它會自動增加,一般用在需要按序列號排序的地方。1 create sequence 你首先要有create sequence或者create any sequence許可權,create sequence emp sequence incr...