本文由作者 KunMinX 原創,與 7 萬進階讀者共同向上生長 ?
由來
LinkageRecyclerView 是一款基於 MVP 架構開發的二級聯動列表控制元件。它是因 “RxJava 魔法師” 這個專案的需求而存在。
在最初尋遍了 GitHub 也沒有找到合適的開源庫(高度解耦、可遠端依賴)之後,我決心研究參考現有開源專案關於二級聯動的邏輯,並自己動手編寫一個 高度解耦、輕鬆配置、可通過 maven 倉庫遠端依賴 的真正的第三方庫。
LinkageRecyclerView 的個性化配置十分簡單,依託於 MVP 的 “配置解耦” 特性,使用者無需知道內部的實現細節,僅通過實現 Config 類即可完成功能的定製和擴充套件。
此外,在不設定自定義配置的情況下,LinkageRecyclerView 最少只需 一行程式碼即可執行起來。
RxMagic | Eleme Linear | Eleme Grid |
---|---|---|
目標
LinkageRecyclerView 的目標是:一行程式碼即可接入二級聯動列表。
除了一鍵接入而省去 99% 不必要的、複雜的、重複的工作外,你還可以從這個開源專案獲得的內容包括:
- 整潔的程式碼風格和標準的資源命名規範。
- MVP 架構在編寫第三方庫的最佳實踐:使用者無需瞭解內部邏輯,通過實現介面即可輕鬆完成個性化配置。
- 優秀的程式碼分層和封裝思想,在不做任何個性化配置的情況下,一行程式碼即可接入。
- 主體工程基於前沿的、遵循關注點分離的 JetPack MVVM 架構。
- AndroidX 和 Material Design 2 的全面使用。
- ConstraintLayout 約束佈局的最佳實踐。
- 絕不使用 Dagger,絕不使用奇技淫巧、編寫艱深晦澀的程式碼。
如果你正在思考 如何為專案挑選合適的架構 的話,這個專案值得你參考!
簡單使用
1.在 build.gradle 中新增對該庫的依賴。
implementation 'com.kunminx.linkage:linkage-recyclerview:1.3.2'
複製程式碼
2.依據預設的分組實體類(DefaultGroupedItem)的結構準備一串資料(以下以 JSON 為例)。
// DefaultGroupedItem.ItemInfo 包含三個欄位:
String title //(必填)二級選項的標題
String group //(必填)二級選項所在分組的名稱,要和對應的一級選項的標題相同
String content //(選填)二級選項的內容
複製程式碼
[
{
"header": "優惠",
"isHeader": true
},
{
"isHeader": false,
"info": {
"content": "好吃的食物,增肥神器,有求必應",
"group": "優惠",
"title": "全家桶"
}
},
{
"header": "熱賣",
"isHeader": true
},
{
"isHeader": false,
"info": {
"content": "爆款熱賣,月銷超過 999 件",
"group": "熱賣",
"title": "烤全翅"
}
}
]
複製程式碼
3.在佈局中引入 LinkageRecyclerView 。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.kunminx.linkage.LinkageRecyclerView
android:id="@+id/linkage"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
複製程式碼
4.在得到資料後,最少只需一行程式碼即可完成初始化。
List<DefaultGroupedItem> items = gson.fromJson(...);
//一行程式碼完成初始化
linkage.init(items);
複製程式碼
個性化配置詳見
看不過癮?這裡只為你 而準備了一份 簡潔有力的 《重學安卓》認知地圖 ?