由來
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.2.0'
2.依據聯動實體類的結構簡單配置 json。
[
{
"header": "優惠",
"isHeader": true
},
{
"isHeader": false,
"t": {
"content": "好吃的食物,增肥神器,有求必應",
"group": "優惠",
"imgUrl": "https://upload-images.io/0a94.png",
"title": "全家桶"
}
},
{
"header": "熱賣",
"isHeader": true
}
]
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.在代碼中解析 json,並只用一行代碼完成初始化。
List<LinkageItem> items = gson.fromJson(...);
//一行代碼完成初始化
linkage.init(items);