RecyclerView 嵌套 方案 探索

ListView用了很久了 recyclerView也出来很久了 老项目也该换换控件了 老项目用的ListView多布局 每次切换布局的时候一旦子控件需要重新measure 便会有卡顿的效果

一直以来是一块心病。

应用写了不少,基本都是首页用到了多布局。而且多布局还伴随着刷新和加载。大致大家用的最平常的实现方式无非那么几种

  • listView或者recyclerView返回不同的itemType 从而inflate不同的View
  • listView或者recyclerView添加很多个头布局监听是否滚动底部 (略笨)(recyclerView还是通过itemType)
  • listView或者recyclerView外层嵌套一层scrollView或者nestedScrollView 屏蔽子控件的滑动,在ScrollView中半写死布局顺序,底部是无限大Listview 从而实现的加载刷新。

随着业务的扩展更新迭代,慢慢的就会发现这几种方式还是不够灵活。

这几种方式还是属于半写死的状态。后两个一旦首页的布局发生改变意味着写死的布局又要更改,无非第一种通过不同itemType返回布局样式够灵活。以前的项目我的确是这么写的,不过最近想要换成recyclerView

那么问题来了

recyclerView嵌套recyclerView怎么办?父布局是竖向的,子布局也是竖向的怎么办?

(虽说官方不推荐滑动控件进行嵌套,但是业务需要啊,产品经理不管你啊!!!)

recyclerView是不能绘制无穷大的啊。控制他的只能是layoutmanager

这里嵌套竖向的会有个问题,子recyclerView的空间会 显示不全, 子recyclerView是横向的完全没问题,不过竖向的就有问题了。原因还是没有measure字布局的高度,这里网上一般给出的解决方案是遍历 子recyclerView中每一个item的高度,进行累加,从而通过layoutpamars给子recyclerView赋值高度,让她显示全。

解决方法有了,但我还是感觉这个方法笨啊(说白了就是麻烦,性能也不好)

于是乎看看淘宝是怎么做的哔哩哔哩是怎么做的


上工具 hierarchyviewer

Paste_Image.png

果然淘宝是用的RecyclerView 多布局的方式,但是细心的我发现

仔细看下面两张图

Paste_Image.png
Paste_Image.png

recyclerView中的两个Item 不同的布局方式,但同隶属于一个recyclerView

recyclerView控制item的无非是layoutmanager 想必大厂都重写了layoutmanager

这里推荐一个recyclerView 框架
Vlayout :https://github.com/alibaba/vlayout

你可能感兴趣的:(RecyclerView 嵌套 方案 探索)