摘要:架構在編寫第三方庫的最佳實踐使用者無需了解內部邏輯,通過實現接口即可輕松完成個性化配置。絕不使用,絕不使用奇技淫巧編寫艱深晦澀的代碼。
由來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 items = gson.fromJson(...);
//一行代碼完成初始化
linkage.init(items);
個性化配置詳見
項目鏈接:github.com/KunMinX/Lin…
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/7327.html
摘要:未雨綢繆方能在關鍵時刻拯救自己開源這個項目的另一個緣由是有些事我都已忘記,但我現在還記得,在一個晚上,同事阿左問我,今天怎么不開心。由于情況緊急,我選擇求助于同在加班的阿左,沒想到,阿左居然在項目閑時自己封裝了一個庫。 前言 很高興和大家見面! 上周五我在掘金發表了 《真香警告:即使不用餓了么訂餐,也請務必收藏好該庫!》,文中主角 Linkage-RecyclerView 原本只是為 ...
摘要:未雨綢繆方能在關鍵時刻拯救自己開源這個項目的另一個緣由是有些事我都已忘記,但我現在還記得,在一個晚上,同事阿左問我,今天怎么不開心。由于情況緊急,我選擇求助于同在加班的阿左,沒想到,阿左居然在項目閑時自己封裝了一個庫。 前言 很高興和大家見面! 上周五我在掘金發表了 《真香警告:即使不用餓了么訂餐,也請務必收藏好該庫!》,文中主角 Linkage-RecyclerView 原本只是為 《Rx...
閱讀 999·2021-11-15 18:06
閱讀 2367·2021-10-08 10:04
閱讀 2652·2019-08-28 18:03
閱讀 897·2019-08-26 13:42
閱讀 1920·2019-08-26 11:31
閱讀 2423·2019-08-23 17:13
閱讀 926·2019-08-23 16:45
閱讀 2055·2019-08-23 14:11