摘要:架構(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 |
---|---|---|
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,絕不使用奇技淫巧、編寫艱深晦澀的代碼。
簡(jiǎn)單使用如果你正在思考 如何為項(xiàng)目挑選合適的架構(gòu) 的話,這個(gè)項(xiàng)目值得你參考!
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)鍵時(shí)刻拯救自己開源這個(gè)項(xiàng)目的另一個(gè)緣由是有些事我都已忘記,但我現(xiàn)在還記得,在一個(gè)晚上,同事阿左問我,今天怎么不開心。由于情況緊急,我選擇求助于同在加班的阿左,沒想到,阿左居然在項(xiàng)目閑時(shí)自己封裝了一個(gè)庫(kù)。 前言 很高興和大家見面! 上周五我在掘金發(fā)表了 《真香警告:即使不用餓了么訂餐,也請(qǐng)務(wù)必收藏好該庫(kù)!》,文中主角 Linkage-RecyclerView 原本只是為 ...
摘要:未雨綢繆方能在關(guān)鍵時(shí)刻拯救自己開源這個(gè)項(xiàng)目的另一個(gè)緣由是有些事我都已忘記,但我現(xiàn)在還記得,在一個(gè)晚上,同事阿左問我,今天怎么不開心。由于情況緊急,我選擇求助于同在加班的阿左,沒想到,阿左居然在項(xiàng)目閑時(shí)自己封裝了一個(gè)庫(kù)。 前言 很高興和大家見面! 上周五我在掘金發(fā)表了 《真香警告:即使不用餓了么訂餐,也請(qǐng)務(wù)必收藏好該庫(kù)!》,文中主角 Linkage-RecyclerView 原本只是為 《Rx...
閱讀 1005·2021-11-15 18:06
閱讀 2371·2021-10-08 10:04
閱讀 2656·2019-08-28 18:03
閱讀 906·2019-08-26 13:42
閱讀 1924·2019-08-26 11:31
閱讀 2431·2019-08-23 17:13
閱讀 932·2019-08-23 16:45
閱讀 2059·2019-08-23 14:11