• Android recycleview瀑布流中间穿插一行占满一屏


    背景:

    我们在开发过程中,经常会混合不同的style view展示,对不同的内容有着不同的要求。列表是提供容易的view。在Android中,recycleview支持多样化的线上,但是我们会发现,布局的样式基本都被layoutmanager管理者,设置好布局manager,就无法展示多样化,这样很不利于我们的开发过程。

    需求:

    我们在开发过程中,往往需要处理这些,比如:我们在瀑布流的manager中,需要占用一行来显示我们其他的东西,如下图所示:

     

    瀑布流现在有五条数据:A、B、C、D、E。这是一个瀑布流,瀑布流是左右排队,C需要单独占领一行,这个怎么处理么

    只需要重写RecycleView.Adapter的onViewAttachedToWindow(ViewHolder)的方法。

    这里会涉及到一个getItemViewType():

    我们正常都是支持一种类型,

    也就是在onCreateViewHolder方法,创建ViewHolder只创建一个,默认itemType的值为0.

    如果你的数据源对应好多种数据类型,可以为每种创建一个ViewHolder样式,就可以通过这样。

    比如一片文章:有标题、有文字段落、有图片、有视频、有引用。

    我们可以定义五种类型,这样就组建一篇完整的数据类型。

    所以在onViewAttachedToWindow中,是view添加到窗口时,获取当前view的位置,如果这个位置的type是需要占一屏的,直接设置

    StaggeredGridLayoutManager.LayoutParams params = (StaggeredGridLayoutManager.LayoutParams) holder.itemView.getLayoutParams();
    params.setFullSpan(true);

    setFullSpan(true):这个Span(一栏)填满全屏,其他的还是瀑布流展示。这样可以做到多样化显示。

     

     

  • 相关阅读:
    用MicroPython开发ESP32-文件传输工具-ampy
    计组期末复习---个人版
    链表合并 分数 25
    UE 实现鼠标点选模型
    JAVA并发编程--7 在编程过程中怎么避免死锁
    6K6w5LiA5qyh5pS75Ye75YiG5p6Q
    机械转码日记【14】C++运算符重载的应用——实现一个日期类计算器
    使用RS485芯片进行串口通讯
    详解Eureka的自我保护机制
    CUDA核函数,如何设置grid和block即不超过大小又能够遍历整个volume
  • 原文地址:https://blog.csdn.net/qq36246172/article/details/126351212