真香警告:即使不用餓了麼訂餐,也請務必收藏好該庫!

KunMinX發表於2019-05-10

本文由作者 KunMinX 原創,與 7 萬進階讀者共同向上生長 ?

由來

LinkageRecyclerView 是一款基於 MVP 架構開發的二級聯動列表控制元件。它是因 “RxJava 魔法師” 這個專案的需求而存在。

在最初尋遍了 GitHub 也沒有找到合適的開源庫(高度解耦、可遠端依賴)之後,我決心研究參考現有開源專案關於二級聯動的邏輯,並自己動手編寫一個 高度解耦、輕鬆配置、可通過 maven 倉庫遠端依賴 的真正的第三方庫。

LinkageRecyclerView 的個性化配置十分簡單,依託於 MVP 的 “配置解耦” 特性,使用者無需知道內部的實現細節,僅通過實現 Config 類即可完成功能的定製和擴充套件。

此外,在不設定自定義配置的情況下,LinkageRecyclerView 最少只需 一行程式碼即可執行起來

RxMagic Eleme Linear Eleme Grid
7.gif
2.gif
3.gif

目標

LinkageRecyclerView 的目標是:一行程式碼即可接入二級聯動列表

除了一鍵接入而省去 99% 不必要的、複雜的、重複的工作外,你還可以從這個開源專案獲得的內容包括:

  1. 整潔的程式碼風格和標準的資源命名規範。
  2. MVP 架構在編寫第三方庫的最佳實踐:使用者無需瞭解內部邏輯,通過實現介面即可輕鬆完成個性化配置
  3. 優秀的程式碼分層和封裝思想,在不做任何個性化配置的情況下,一行程式碼即可接入。
  4. 主體工程基於前沿的、遵循關注點分離的 JetPack MVVM 架構。
  5. AndroidX 和 Material Design 2 的全面使用。
  6. ConstraintLayout 約束佈局的最佳實踐。
  7. 絕不使用 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);
複製程式碼

個性化配置詳見

專案連結:github.com/KunMinX/Lin…

xzl短

看不過癮?這裡只為你 而準備了一份 簡潔有力的 《重學安卓》認知地圖 ?

相關文章