additemdecoration重复_使用MultiViewAdapter创建Recyclerview adapter[译]

RecyclerView是一个重要的控件,许多app都有使用。它是一个可以用在多种案例中的通用控件,但是以为其灵活性,也让adapter的创建多了许多工作。

支持多类型视图是其优于listview的一个方面。但是显示多类型视图需要许多公式化的重复代码。如果多余三个类型视图就有点让人手忙脚乱了。你可以多用几个if-else ,switch cases..但不幸的是,要重用床架和viewholder的代码不是一件易事。

MultiViewAdapter正是为了解决这个问题。虽然现在已经出现了几个解决方案,但是这些库都有一些限制:对象需要继承一个父类,这可能跟你的数据模型有点冲突。

强制在model类中持有layout resource ID,这打乱了依赖关系。

无法自己管理view type ID,通常是将 resource ID 作为view type,所以你无法在两个不同的view type中使用同一布局文件。

它们都没有利用DiffUtil。

如果你想让不同的view type具有不同的item-decorations/span-size/selection-modes,你必须写switch case语句。

MultiViewAdapter解决了所有这些问题。这个库有意采用了不影响对象模型和关系的设计。

源码

对于这个library所能达到的效果,让我们先睹为快:

功能特色对model的使用无限制。

对DiffUtil开箱即用的支持

支持单选和多选

每个view type可以有自己的span count 或者 ItemDecoration,你不必写switch cases 或者 if-else 语句。

如何使用

在app的gradle 文件中添加dependencydependencies {

// ... other dependencies here

compile 'com.github.devahamed:multi-view-adapter:1.1.0'

}

背后的概念

cyclerAdapter —  adapter 类。它可以有多个ItemBinder和DataManager。继承自官方的RecyclerView.Adapter。

ItemBinder —ItemBinder的职责是创建和绑定viewholder。它有一个type参数,接收需要显示的model类。ItemBinder需要在RecyclerAdapter中注册。

DataManger — 它持有数据并且在数据修改的时候调用必要的动画。有两种DataManager。显示list的DataListManager以及显示一个item(比如Header, Footer 等)的DataItemManager。

创建简单的 adapter

假如你有一个对象列表,比如说“car”。如果你想显示一个“car”列表,下面是所有代码。public class CarAdapter ex

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值