成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

真香警告:即使不用餓了么訂餐,也請(qǐng)務(wù)必收藏好該庫(kù)!

hightopo / 2300人閱讀

摘要:架構(gòu)在編寫第三方庫(kù)的最佳實(shí)踐使用者無需了解內(nèi)部邏輯,通過實(shí)現(xiàn)接口即可輕松完成個(gè)性化配置。絕不使用,絕不使用奇技淫巧編寫艱深晦澀的代碼。

由來

LinkageRecyclerView 是一款基于 MVP 架構(gòu)開發(fā)的二級(jí)聯(lián)動(dòng)列表控件。它是因 “RxJava 魔法師” 這個(gè)項(xiàng)目的需求而存在。

在最初尋遍了 GitHub 也沒有找到合適的開源庫(kù)(高度解耦、可遠(yuǎn)程依賴)之后,我決心研究參考現(xiàn)有開源項(xiàng)目關(guān)于二級(jí)聯(lián)動(dòng)的邏輯,并自己動(dòng)手編寫一個(gè) 高度解耦、輕松配置、可通過 maven 倉(cāng)庫(kù)遠(yuǎn)程依賴 的真正的第三方庫(kù)。

LinkageRecyclerView 的個(gè)性化配置十分簡(jiǎn)單,依托于 MVP 的 “配置解耦” 特性,使用者無需知道內(nèi)部的實(shí)現(xiàn)細(xì)節(jié),僅通過實(shí)現(xiàn) Config 類即可完成功能的定制和擴(kuò)展。

此外,在不設(shè)置自定義配置的情況下,LinkageRecyclerView 最少只需 一行代碼即可運(yùn)行起來。

RxMagic Eleme Linear Eleme Grid
目標(biāo)

LinkageRecyclerView 的目標(biāo)是:一行代碼即可接入二級(jí)聯(lián)動(dòng)列表。

除了一鍵接入而省去 99% 不必要的、復(fù)雜的、重復(fù)的工作外,你還可以從這個(gè)開源項(xiàng)目獲得的內(nèi)容包括:

    整潔的代碼風(fēng)格和標(biāo)準(zhǔn)的資源命名規(guī)范。

    MVP 架構(gòu)在編寫第三方庫(kù)的最佳實(shí)踐:使用者無需了解內(nèi)部邏輯,通過實(shí)現(xiàn)接口即可輕松完成個(gè)性化配置

    優(yōu)秀的代碼分層和封裝思想,在不做任何個(gè)性化配置的情況下,一行代碼即可接入。

    主體工程基于前沿的、遵循關(guān)注點(diǎn)分離的 JetPack MVVM 架構(gòu)。

    AndroidX 和 Material Design 2 的全面使用。

    ConstraintLayout 約束布局的最佳實(shí)踐。

    絕不使用 Dagger,絕不使用奇技淫巧、編寫艱深晦澀的代碼。

如果你正在思考 如何為項(xiàng)目挑選合適的架構(gòu) 的話,這個(gè)項(xiàng)目值得你參考!

簡(jiǎn)單使用

1.在 build.gradle 中添加對(duì)該庫(kù)的依賴。

implementation "com.kunminx.linkage:linkage-recyclerview:1.3.2"

2.依據(jù)默認(rèn)的分組實(shí)體類(DefaultGroupedItem)的結(jié)構(gòu)準(zhǔn)備一串?dāng)?shù)據(jù)(以下以 JSON 為例)。

// DefaultGroupedItem.ItemInfo 包含三個(gè)字段:
String title //(必填)二級(jí)選項(xiàng)的標(biāo)題
String group //(必填)二級(jí)選項(xiàng)所在分組的名稱,要和對(duì)應(yīng)的一級(jí)選項(xiàng)的標(biāo)題相同
String content //(選填)二級(jí)選項(xiàng)的內(nèi)容
[
  {
    "header": "優(yōu)惠",
    "isHeader": true
  },
  {
    "isHeader": false,
    "info": {
      "content": "好吃的食物,增肥神器,有求必應(yīng)",
      "group": "優(yōu)惠",
      "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.在得到數(shù)據(jù)后,最少只需一行代碼即可完成初始化。

List items = gson.fromJson(...);

//一行代碼完成初始化
linkage.init(items);
個(gè)性化配置詳見

項(xiàng)目鏈接:github.com/KunMinX/Lin…

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/7327.html

相關(guān)文章

  • 我是如何做到 GitHub star 在 5 天內(nèi)從 0 飆至 666 的

    摘要:未雨綢繆方能在關(guān)鍵時(shí)刻拯救自己開源這個(gè)項(xiàng)目的另一個(gè)緣由是有些事我都已忘記,但我現(xiàn)在還記得,在一個(gè)晚上,同事阿左問我,今天怎么不開心。由于情況緊急,我選擇求助于同在加班的阿左,沒想到,阿左居然在項(xiàng)目閑時(shí)自己封裝了一個(gè)庫(kù)。 前言 很高興和大家見面! 上周五我在掘金發(fā)表了 《真香警告:即使不用餓了么訂餐,也請(qǐng)務(wù)必收藏好該庫(kù)!》,文中主角 Linkage-RecyclerView 原本只是為 ...

    AJie 評(píng)論0 收藏0
  • 大物始于?。何沂侨绾巫龅?GitHub star 在 5 天內(nèi)從 0 飆至 666 的

    摘要:未雨綢繆方能在關(guān)鍵時(shí)刻拯救自己開源這個(gè)項(xiàng)目的另一個(gè)緣由是有些事我都已忘記,但我現(xiàn)在還記得,在一個(gè)晚上,同事阿左問我,今天怎么不開心。由于情況緊急,我選擇求助于同在加班的阿左,沒想到,阿左居然在項(xiàng)目閑時(shí)自己封裝了一個(gè)庫(kù)。 前言 很高興和大家見面! 上周五我在掘金發(fā)表了 《真香警告:即使不用餓了么訂餐,也請(qǐng)務(wù)必收藏好該庫(kù)!》,文中主角 Linkage-RecyclerView 原本只是為 《Rx...

    番茄西紅柿 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<