首页
学习
活动
专区
工具
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。

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

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

相关·内容

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

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

85930

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,代码已经上传(文章最后)。 ?

86780

Android实战RecyclerView头部尾部添加方法示例

那么如果使用RecyclerView实现这两个方法的效果该怎么做呢? 网上查询了很久,试过各种各样的实现方式,终于让我发现一个还不错的实现方法,那么就给大家推荐一下。...onCreateViewHolder负责视图加载并且内部完成复用,onBindViewHolder负责数据绑定并且内部完成一系列的缓存机制。这里满足了视图层与逻辑层的分离,典型的mvp模式。...我们可以通过在onCreateViewHolder创建视图的时候,对viewType进行判断,如果添加了头部,在position = 0的时候回调头部的viewType给onCreateViewHolder...= null) { count++; } if (VIEW_HEADER !...笔者在添加头部尾部的时候,发现在配置RecyclerView,如果模式是配置GridLayoutManager的时候,发现头部会跑到第一格,也就是不是自己想要独立一行的效果,这里贴上关键代码,可以解决

68030

装饰者模式及其应用

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(); } } 接着我们来看一下我们是如何使用它的

97720

RecyclerView使用详解(代替ListView)

RecyclerView,必须要从最基础的功能开始实现;今天我们就实现最简单的五点功能: 功能点:为RecyclerView添加点击事件,添加头布局和脚布局,添加下拉刷新和上拉加载更多; 好了首先说下如何用...方法,返回一个自定义的ViewHolder(当RecyclerView需要一个ViewHolder时会回调该方法,如果有可复用的View不会回调) public MyViewHolder onCreateViewHolder...方法返回的holder中的控件(当一个View需要出现在屏幕上时,该方法会被回调,我们需要再该方法中根据数据来更改视图) public void onBindViewHolder(final MyViewHolder...=null){ holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick...listview一样: //添加头布局(必须在设置完布局管理器再添加头布局和脚布局) View headerView = View.inflate(this, R.layout.headerview, null

1.3K20

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...< headercount,返回头布局类型,得到普通布局的normal_position = position - headercount如果normal_position < datas.size...如果想要自定义类型,那么我们可以修改自定义的adapter,在getItemType返回default类型的时候,使用抽象方法让子类实现,修改adapter为抽象类,这将影响: getItemtype...使用抽象方法getDefItemViewType(int realDataPos) oncreateViewholder 返回的View需要根据自定义itemtype实现自定义view,所以暴露抽象方法

91990

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券