资讯专栏INFORMATION COLUMN

真香警告:即使不用饿了么订餐,也请务必收藏好该库!

hightopo / 2150人阅读

摘要:架构在编写第三方库的最佳实践使用者无需了解内部逻辑,通过实现接口即可轻松完成个性化配置。绝不使用,绝不使用奇技淫巧编写艰深晦涩的代码。

由来

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…

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/7327.html

相关文章

  • 我是如何做到 GitHub star 在 5 天内从 0 飙至 666 的

    摘要:未雨绸缪方能在关键时刻拯救自己开源这个项目的另一个缘由是有些事我都已忘记,但我现在还记得,在一个晚上,同事阿左问我,今天怎么不开心。由于情况紧急,我选择求助于同在加班的阿左,没想到,阿左居然在项目闲时自己封装了一个库。 前言 很高兴和大家见面! 上周五我在掘金发表了 《真香警告:即使不用饿了么订餐,也请务必收藏好该库!》,文中主角 Linkage-RecyclerView 原本只是为 ...

    AJie 评论0 收藏0
  • 大物始于小:我是如何做到 GitHub star 在 5 天内从 0 飙至 666 的

    摘要:未雨绸缪方能在关键时刻拯救自己开源这个项目的另一个缘由是有些事我都已忘记,但我现在还记得,在一个晚上,同事阿左问我,今天怎么不开心。由于情况紧急,我选择求助于同在加班的阿左,没想到,阿左居然在项目闲时自己封装了一个库。 前言 很高兴和大家见面! 上周五我在掘金发表了 《真香警告:即使不用饿了么订餐,也请务必收藏好该库!》,文中主角 Linkage-RecyclerView 原本只是为 《Rx...

    番茄西红柿 评论0 收藏0

发表评论

0条评论

hightopo

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<