由来
Linkage-RecyclerView 是一款基于 “MVP 架构(依赖倒置原则)” 开发的二级联动列表控件。它是因 “RxJava 魔法师” 项目需求而存在。
最初寻遍 GitHub 也未找到合适开源库,于是决定另起炉灶,编写 高度解耦、轻松配置、可通过 Maven 仓库远程依赖 的真正第三方库。
Linkage-RecyclerView 个性化配置十分简单,依托于 MVP “配置解耦” 特性,使用者无需知道内部实现细节,仅通过实现 Config 类即可完成功能定制和扩展。
此外,在不设置自定义配置情况下,Linkage-RecyclerView 最少只需 一行代码即可运行。
| RxMagic | Eleme Linear | Eleme Grid |
|---|---|---|
目标
Linkage-RecyclerView 目标是:一行代码即可接入二级联动列表。
除了一键接入而省去 99% 不必要的复杂重复工作外,你还可从该项目获得内容包括:
- 整洁的代码风格和标准的资源命名规范。
- MVP 架构在编写第三方库的最佳实践:使用者无需了解内部逻辑,通过实现接口即可轻松完成个性化配置。
- 优秀的代码分层和封装思想,在不做任何个性化配置情况下,一行代码即可接入。
- 主体工程基于前沿 Jetpack 组件。
- AndroidX 和 Material Design 2 的全面使用。
- ConstraintLayout 约束布局最佳实践。
- 绝不使用 Dagger,绝不使用奇技淫巧、编写艰深晦涩的代码。
如果你正考虑 如何为项目挑选合适架构,该项目值得你参考!
简单使用
1.在 build.gradle 添加依赖。
implementation 'com.kunminx.linkage:linkage-recyclerview:2.7.0'
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);