首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

OnCreateViewholder -如果满足某些条件,如何返回"null“

OnCreateViewHolder 是 Android 开发中 RecyclerView.Adapter 的一个方法,用于创建 RecyclerView 的 ViewHolder 对象。如果满足某些条件,需要返回 null,可以在 OnCreateViewHolder 方法中进行判断并返回 null。

在 RecyclerView 中,ViewHolder 用于缓存 item 的视图,以便在滚动时能够快速重用。OnCreateViewHolder 方法会在需要创建新的 ViewHolder 对象时被调用。

以下是一个示例代码,展示如何在 OnCreateViewHolder 方法中根据条件返回 null:

代码语言:txt
复制
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    // 根据 viewType 创建不同类型的 ViewHolder
    if (viewType == TYPE_A) {
        // 创建 ViewHolderA
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_type_a, parent, false);
        return new ViewHolderA(view);
    } else if (viewType == TYPE_B) {
        // 创建 ViewHolderB
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_type_b, parent, false);
        return new ViewHolderB(view);
    } else {
        // 不满足条件,返回 null
        return null;
    }
}

在上述示例中,根据 viewType 的不同,创建了不同类型的 ViewHolder。如果 viewType 不满足条件,即不是 TYPE_A 或 TYPE_B,就会返回 null。

需要注意的是,如果返回了 null,那么在后续的 onBindViewHolder 方法中,对应的 position 将不会被调用,也就不会显示对应的 item。

关于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体品牌商,无法给出具体的链接地址。但腾讯云提供了丰富的云计算服务,可以根据具体需求在腾讯云官网进行查找和了解。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MySQL 查询“不等于”时,如果值为 null 也会满足条件的解决办法。

使用 MySQL 中,如果查询字符串时使用“!=”条件,当字段值为 Null 时也会满足该条件。...= 'https://cloud.tencent.com'; 返回结果: id name url 2 李四 我们的需求是返回 id 为 2 和 3 的两条记录,因为其中 2 的 url 为空字符串,...3 的 url 为 NULL,从字面意思来讲都不等于 https://cloud.tencent.com 。...但实际上在 MySQL 中只返回了 id 为 2 的记录。 解决办法是补充对 null 的判断,比如: select * from users where url !...= "https://cloud.tencent.com" or url is null 当然,如果创建数据表时没有特殊要求的话,MySQL 字段强烈不建议设置 null 为默认值,字符串类型默认值:空字符串即可

4710
  • 爆表!RecyclerView性能提升200%,异步预加载大杀器!

    当时由于篇幅的原因,并没有深入展开讲解,于是有很多感兴趣的朋友纷纷留言表示:能不能结合相关的示例代码讲解一下到底如何实现?...那么今天我就结合之前讲的如何优化onCreateViewHolder的加载时间,讲一讲如何实现onCreateViewHolder的异步预加载,文章末尾会给出示例代码的链接地址,希望能给你带来启发。...其次可能就是想办法让设计师重新设计,将布局中的某些内容删除或者折叠了,对暂不展示的内容使用ViewStub进行延迟加载。...详细的流程可以参见下图: 实现 上面我简单地讲解了一下原理,下一步就是考虑如何实现这样的效果了。 预加载缓存池 首先在预加载前,我们需要先创建一个缓存池来存储预加载的View对象。...如果有则取出,并进行一次预加载补充给ViewCache。 如果没有,就只能同步加载布局了。

    1.9K31

    android RecycleView Adapter简单封装

    早些时候我们使用系统提供个的BaseAdapter的时候为了满足大家的需要,我们总会对BaseAdapter做一层上层的封装,然后对于实际业务我们只需要关心getView里面的View即可,是代码可读性和可维护性更高...,特别是在多View的界面,这个优势就体现出来了,自从Android 5.0后系统提供的,先不说效率如何,这个既然是Google为我们提供的,我们姑且用之,不过说实话,对于它的写法不习惯他的人看着很是麻烦...有了上面的思路,首先我们要获取adapter的View,然后将它赋给onCreateViewHolder返回的view对象。...layoutIds; this.mLInflater = LayoutInflater.from(mContext); } public BaseRecycleHolder onCreateViewHolder...我已经将这个封装为一个库文件,如果有需要的可以自己打包aar或者jar,相关资料请参照:打包aar,代码已经上传(文章最后)。 ?

    89280

    装饰者模式及其应用

    gdutxiaoxu/article/details/51885105 前几天看了鸿洋大神的 Android 优雅的为RecyclerView添加HeaderView和FooterView,发现装饰者模式 在某些情况下是设计得如此...对于加糖,又加奶的写一个类,对于对于加糖,又摩卡的写一个类,对于对于加糖、又奶泡的写一个类,对于加糖,又加奶、摩卡的写一个类—- 说到这里,你会发现这里四种配料就要写十几种实现类了,那如果我们的配料是二十几种或者三十几种呢...:16 * @ email:gdutxiaoxu@163.com */ public abstract class Coffee { /** * * @return 返回价格...*/ public abstract int getPrice(); /** * 返回名字 * @return */ public abstract...(); } public int getFootersCount() { return mFootViews.size(); } } 接着我们来看一下我们是如何使用它的

    1K20

    Kotlin入门(23)适配器的进阶表达

    前面在介绍列表视图和网格视图时,它们的适配器代码都存在视图持有者ViewHolder,因为Android对列表类视图提供了回收机制,如果某些列表项在屏幕上看不到了,则系统会自动回收相应的视图对象。...= null     fun setOnItemClickListener(listener: OnItemClickListener) {         this.itemClickListener...= null     fun setOnItemLongClickListener(listener: OnItemLongClickListener) {         this.itemLongClickListener...= null     fun setOnItemClickListener(listener: OnItemClickListener) {         this.itemClickListener...这么神奇的魔法,快来看看Kotlin的适配器代码是如何书写的: //利用Kotlin的插件LayoutContainer,在适配器中直接使用控件对象,而无需对其进行显式声明 class RecyclerStaggeredAdapter

    1.8K41

    BRAVH源码模拟

    关于动画,可以使用animator或者animation都可以的,只要定制animateView方法 添加头部尾部空数据的布局 我们看BRAVH如何实现, 添加header,footer,loading...的view GetItemCount需要返回的数据量为headercount + datas.size + footercount + loadingcount GetItemType如果position...返回头布局类型,得到普通布局的normal_position = position - headercount如果normal_position 如果想要自定义类型,那么我们可以修改自定义的adapter,在getItemType返回default类型的时候,使用抽象方法让子类实现,修改adapter为抽象类,这将影响: getItemtype...使用抽象方法getDefItemViewType(int realDataPos) oncreateViewholder 返回的View需要根据自定义itemtype实现自定义view,所以暴露抽象方法

    96090

    IM开发干货分享:万字长文,详解IM“消息“列表卡顿优化实践

    4.3 系统是如何生成一帧的 在 Android4.0 以前:处理用户输入事件、绘制、栅格化都由 CPU 中应用主线程执行,很容易造成卡顿。...为了解决这个问题,我们将第一次获取的用户信息进行缓存,如果内存中存在当前用户的信息则直接返回,并且在每次修改当前用户信息的时候,更新内存中的对象。   .../**   * 获取当前用户信息   */   public UserCacheInfo getUserCacheInfo(){       //如果当前用户信息已经存在,则直接返回       if(...如果不可见的 UI 也在做绘制操作,这会导致某些区域的像素被绘制了多次,浪费大量的 CPU、GPU 资源。  ...而在 onCreateViewHolder 方法中需要返回 ViewHolder,所以没有办法直接使用。

    1.7K20
    领券