现在的速度跟新的速度越来越快,手机的开发,变更也日夜加快普通的已经不能满足我们的需求了,我们看下面一张图

多布局

这张图就是一个简简单单的多布局,然而我们要是用普通的的视频去实现要写的代码量很多看着也很拥挤,逻辑也不清晰,那么我推荐大家使用一款适配器,代码量非常少,逻辑非常清晰

我们实现的使用的适配器是万能适配

万能适配器的官方网址:https://www.jianshu.com/p/b343fcff51b0

实体类必须实现MultiItemEntity,在设置数据的时候,需要给每一个数据设置itemType

public class MultipleItem implements MultiItemEntity {public static final int TEXT = 1;public static final int IMG = 2;private int itemType;public MultipleItem(int itemType) {this.itemType = itemType;}@Overridepublic int getItemType() {return itemType;}
}

在构造里面addItemType绑定type和layout的关系

public class MultipleItemQuickAdapter extends BaseMultiItemQuickAdapter<MultipleItem, BaseViewHolder> {public MultipleItemQuickAdapter(List data) {super(data);addItemType(MultipleItem.TEXT, R.layout.text_view);addItemType(MultipleItem.IMG, R.layout.image_view);}@Overrideprotected void convert(BaseViewHolder helper, MultipleItem item) {switch (helper.getItemViewType()) {case MultipleItem.TEXT:helper.setImageUrl(R.id.tv, item.getContent());break;case MultipleItem.IMG:helper.setImageUrl(R.id.iv, item.getContent());break;}}}

长话短说我们看这一组具体实现的代码

public class FirstAdapter extends BaseMultiItemQuickAdapter<FirstBean.ResultBean.ListBean,BaseViewHolder>{/**
     * Same as QuickAdapter#QuickAdapter(Context,int) but with
     * some initialization data.
     *
     * @param data A new list is created out of this one to avoid mutable list
     */
    List<FirstBean.ResultBean.ListBean> data;
    public FirstAdapter(List<FirstBean.ResultBean.ListBean> data) {super(data);
        this.data=data;
        //跟据类型的不同加入不同的布局
        addItemType(1, R.layout.item1);
        addItemType(2, R.layout.item2);
        addItemType(3, R.layout.item3);
    }@Override
    protected void convert(BaseViewHolder helper, FirstBean.ResultBean.ListBean item) {//根据返回的类型初始化控件
        switch (helper.getItemViewType()){case 1:{helper.setText(R.id.title1,item.getTitle());
                helper.setText(R.id.title2,item.getTitle2());
                Picasso.with(mContext).load(item.getFirstImg()).placeholder(R.mipmap.ic_launcher).into((ImageView)helper.getView(R.id.img1));
                Picasso.with(mContext).load(item.getSecondImg()).placeholder(R.mipmap.ic_launcher).into((ImageView)helper.getView(R.id.img2));

            }break;
            case 2:{helper.setText(R.id.title,item.getTitle());
                Picasso.with(mContext).load(item.getFirstImg()).placeholder(R.mipmap.ic_launcher).into((ImageView)helper.getView(R.id.img));
            }break;
            case 3:helper.setText(R.id.title,item.getTitle());
                Picasso.with(mContext).load(item.getFirstImg()).placeholder(R.mipmap.ic_launcher).into((ImageView)helper.getView(R.id.img));
                break;
        }}//根据要求返回不同的类型
    @Override
    public int getItemViewType(int position) {if(data.get(position).getSecondImg()!=null){return 1;
        }else if("2".equals(data.get(position).getMark())){return 2;
        }else {return 3;
        }}
}

Android 泽宇多布局相关推荐

  1. Android 泽宇节操视频

    今天我要介绍的是节操视频,此框架的小编个人感觉还是很好用的,轻轻松松的几行代码就搞定了 1.所用依赖:implementation 'fm.jiecao:jiecaovideoplayer:5.5' ...

  2. Android 泽宇三种底部导航栏

    compile 'com.flyco.tablayout:FlycoTabLayout_Lib:2.0.8@aar'//底部导航 <com.flyco.tablayout.CommonTabLa ...

  3. Android 泽宇Glide和Picasso框架之间的区别与应用

    Glide和Picasso是目前Android开发中很流行的图片加载库,Glide库和Picasso库也有极大的相似性,这篇文章就通过对比的方式描述一下这个两个功能强大的优秀库的使用. 一.简介: 1 ...

  4. Android 泽宇App广告栏

    在介绍具体的使用说明之前,我们先看一下简单的实现效果: 使用说明 显示一个默认广告弹窗,支持单广告活动.多广告活动,当弹窗显示多广告是默认显示底部小圆圈,当显示单活动时默认不显示底部小圆圈: 默认支持 ...

  5. Android 泽宇二级列表

    在开发 Android APP 的时候,难免会需要实现二级列表的情况,而在自己的项目中使用的列表是ExpandableListView 如若转发标明转载处:https://mp.csdn.net/po ...

  6. Android 泽宇_EventBus的使用

    1.EventBus 简介 EventBus是一种用于Android的事件发布-订阅总线,由GreenRobot开发,Gihub地址是:EventBus.它简化了应用程序内各个组件之间进行通信的复杂度 ...

  7. Android 泽宇GC垃圾回收机制算法

    GC是什么? GC的英文全称是:Gabage Collection,翻译成中文就是垃圾回收的意思.在一个对象不再被程序引用时,它所占用的堆空间就可以回收,以便于分配给新的对象使用. 那我们在了解回收机 ...

  8. Android 泽宇Retrofit+Rxjava

    今天就写一个简单的Retrofit+Rxjava的联合运用的代码 这是一个请求的接口返回给观察者 Observable是被观察者,Observe是观察者 @FormUrlEncoded @POST(& ...

  9. Android 泽宇管理Fragment的方法

    public Fragment addFragment(int id, Class<Fragment> fragmentClass, Map<String,String> ma ...

最新文章

  1. windows搭建gcc开发环境(msys2) objdump
  2. 你不知道的CSS单位
  3. Linux 系统编程
  4. 计算机组成测试题目及答案,计算机组成原理期中测试试卷一(含题目和答案)
  5. python回归取残差_如何用sklearn拟合线性回归后的残差方差
  6. 【python自动化办公03】word操作-文档内容替换
  7. C# 获取FormData数据
  8. php cdi_教程:编写自己的CDI扩展
  9. RHEL 6安装中的问题
  10. 苹果发布iOS/iPadOS15.1正式版 新增同播共享等功能
  11. 学习使用常用的windbg命令(u、dt、ln、x)
  12. wampserver修改默认根目录
  13. 爱奇艺开源的高性能网络安全监控引擎
  14. 两台计算机小局域网,两台电脑连接局域网方法
  15. 数据结构作业总结_三种迷宫生成算法+三种走迷宫算法+pyqt5可视化(1)
  16. python excel行列转置_Excel 行列转换的最简方法
  17. audio接线图解_图文:主板跳线(排线)连接技巧HD AUDIO连线接法
  18. python文件起名字的时候不要用模块的名字,不然会默认导入本地的文件,找不到你要的模块方法,会报错AttributeError: module ‘random‘ has no attribute ‘
  19. leetcode_83_Remove Duplicates from Sorted List
  20. mike21 matlab tools,MIKE21学习软件

热门文章

  1. 数仓建模(维度建模)
  2. 发布房源(三)01——进入发布房源组件-history.replace() 方法跳转页面-有缓存数据
  3. 免费商用图片素材库,建议收藏~
  4. 重新理解CEO的学习能力----HHR计划----以太入门课
  5. openssl 生成证书 server.key server.crt
  6. mac vnc linux,VNC Mac OS X和Linux连接被计算机拒绝
  7. 压敏电阻的工作原理,结构,分类与应用场总结
  8. 腾讯云cdn自动刷新api调用功能实现-python
  9. Lattice CrossLinkNx LIFCL-40应用连载2-使用Reveal Inserter逻辑分析工具
  10. 前序、中序、后序遍历的特性