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

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

由來

LinkageRecyclerView 是一款基於 MVP 架構開發的二級聯動列表控件。它是因 「RxJava 魔法師」 這個項目的需求而存在。java

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

LinkageRecyclerView 的個性化配置十分簡單,依託於 MVP 的 「配置解耦」 特性,使用者無需知道內部的實現細節,僅經過實現 Config 類便可完成功能的定製和擴展。git

此外,在不設置自定義配置的狀況下,LinkageRecyclerView 最少只需 一行代碼便可運行起來github

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

目標

LinkageRecyclerView 的目標是:一行代碼便可接入二級聯動列表json

除了一鍵接入而省去 99% 沒必要要的、複雜的、重複的工做外,你還能夠從這個開源項目得到的內容包括:bash

  1. 整潔的代碼風格和標準的資源命名規範。
  2. MVP 架構在編寫第三方庫的最佳實踐:使用者無需瞭解內部邏輯,經過實現接口便可輕鬆完成個性化配置
  3. 優秀的代碼分層和封裝思想,在不作任何個性化配置的狀況下,一行代碼便可接入。
  4. 主體工程基於前沿的、遵循關注點分離的 JetPack MVVM 架構。
  5. AndroidX 和 Material Design 2 的全面使用。
  6. ConstraintLayout 約束佈局的最佳實踐。
  7. 毫不使用 Dagger,毫不使用奇技淫巧、編寫艱深晦澀的代碼。

若是你正在思考 如何爲項目挑選合適的架構 的話,這個項目值得你參考!架構

簡單使用

1.在 build.gradle 中添加對該庫的依賴。maven

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短

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

相關文章
相關標籤/搜索