我们在日常使用recyclerview时,总会遇到各种比较复杂的布局,这时候仅仅是一个简单的item已经不能满足我们的要求,如何实现这些呢,目前主要有三种方式
1、嵌套
2、addView
3、使用type
这些方法虽然都可以实现我们想要的布局,但缺点都是比较明显的,耦合度特别大,每当我们需要修改时,不得不修改Adapter的内容,因此今天我们要谈一款能优雅、解耦的开源库来实现复杂的布局。
drakeet的MultiType就是为这而生的,其简单,高效,解耦的实现这些复杂的布局,地址传送门 MultiType。MultiType的作者也详细的介绍了该库的如何使用Effective-MultiType
,今天我们就针对具体的需求,如何使用该库。
很早之前就订阅了代码家的gank.io,一直很感谢大牛的无私奉献,每日为我们推送技术文章。因此最近使用代码家的api,开发了一款gank的客户端(应用宝:干货Gank),其中每日gank的数据是比较多的,涉及到Android、iOS、前端等多个领域。
如返回的数据
我们想要每日gank的页面简单好看 ,能区分类别。如下图
从图中可以看我我们需要三种类别,分别是最上面的福利图片,技术文章的类别和文章。
如何使用
通过学习MultiType,必然需要三个ItemViewProvider,对应三种布局。
1.顶部的图片
2.分类标题
3.文章
顶部图片的代码
|
|
分类标题
|
|
技术文章
|
|
这样我们在Activity或其他地方,注册register这些都可以了。
具体代码
如果需要需改,我们只需要修改对应的ItemViewProvider,或添加ItemViewProvider,是不是很方便呢。当然我们还可以结合cardview实现圆角的边距,让布局更加的优雅。
具体如何实现,可看我的github地址MultiTypeDemo。
最后
本文通过gank的每日数据来具体的使用MultiType,本文仅仅只是粗略的讲解了使用的方式,让读者明白MultiType的优点。更多的使用请参考drakeet的讲解。