• 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(一栏)填满全屏,其他的还是瀑布流展示。这样可以做到多样化显示。

     

     

  • 相关阅读:
    vue知识点--vuex+映射
    舞伴问题,棋盘覆盖问题
    【mongodb】--自定义排序规则
    在阿里内部是如何 Debug 线上问题的?
    MYSQL 用!=查询不出等于null的数据,解决办法
    c#保留两位小数
    BUUCTF-WEB-[ACTF2020 新生赛]Includel
    LEAP模型能源与碳排放模型
    Linux系统编程—socket网络编程
    abaqus在仿真过程中中断了,这是为什么
  • 原文地址:https://blog.csdn.net/qq36246172/article/details/126351212