參考:
alibaba/vlayout github 中文文件
android開源庫v - layout:**、天貓都在用的ui框架,趕緊用起來吧!
android vlayout 全面解析
使用alibaba開源庫vlayout實現**首頁
如果一屏內相同型別的 view 個數比較多,需要設定乙個合適的大小,防止來回滾動時重新建立 view:
注意:上述示例**裡只針對type=0的item設定了復用池的大小,如果你的頁面有多種type,需要為每一種型別的分別調整復用池大小引數。recyclerview.recycledviewpool viewpool = new recyclerview.recycledviewpool();
recyclerview.setrecycledviewpool(viewpool);
viewpool.setmaxrecycledviews(0, 10);
載入資料時有兩種方式 : 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都能復用。表示它們共享乙個型別。另一種是當業務有自定義的複雜需求的時候, 可以繼承自virtuallayoutadapter, 實現自己的adapter當hasconsistitemtype=false的時候,不同子adapter之間的型別不共享
在這種情況下,需要使用者注意在當layouthelpers的結構或者資料數量等會影響到布局的元素變化時,需要主動呼叫setlayouthelpers去更新布局模式。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);
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...