本文由做者 KunMinX 原創,與 7 萬進階讀者共同向上生長 🔥php
LinkageRecyclerView 是一款基於 MVP 架構開發的二級聯動列表控件。它是因 「RxJava 魔法師」 這個項目的需求而存在。java
在最初尋遍了 GitHub 也沒有找到合適的開源庫(高度解耦、可遠程依賴)以後,我決心研究參考現有開源項目關於二級聯動的邏輯,並本身動手編寫一個 高度解耦、輕鬆配置、可經過 maven 倉庫遠程依賴 的真正的第三方庫。android
LinkageRecyclerView 的個性化配置十分簡單,依託於 MVP 的 「配置解耦」 特性,使用者無需知道內部的實現細節,僅經過實現 Config 類便可完成功能的定製和擴展。git
此外,在不設置自定義配置的狀況下,LinkageRecyclerView 最少只需 一行代碼便可運行起來。github
RxMagic | Eleme Linear | Eleme Grid |
---|---|---|
LinkageRecyclerView 的目標是:一行代碼便可接入二級聯動列表。json
除了一鍵接入而省去 99% 沒必要要的、複雜的、重複的工做外,你還能夠從這個開源項目得到的內容包括:bash
若是你正在思考 如何爲項目挑選合適的架構 的話,這個項目值得你參考!架構
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);
複製代碼
看不過癮?這裏只爲你 而準備了一份 簡潔有力的 《重學安卓》認知地圖 😉