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

回收者视图中的项目不触发onBindViewHolder

是指在Android开发中,当一个RecyclerView的Item视图被回收并重新利用时,不会触发onBindViewHolder方法。

在RecyclerView中,当Item视图滑出屏幕或者不再可见时,会被回收并放入一个回收池中,以便后续可以被重新利用。当这个Item视图再次出现在屏幕上时,RecyclerView会从回收池中取出一个回收的Item视图,并将其绑定到新的数据上。这个绑定过程通常是通过onBindViewHolder方法来实现的。

然而,有时候在回收者视图中的项目被重新利用时,并不需要重新绑定数据。这可能是因为这个Item视图的数据没有发生变化,或者数据的变化不需要在视图上进行更新。在这种情况下,RecyclerView会跳过调用onBindViewHolder方法,以提高性能和效率。

这种情况下,可以通过在RecyclerView的Adapter中重写getItemViewType方法,并返回一个特定的视图类型来实现。然后,在重写的onCreateViewHolder方法中,根据视图类型来创建不同的ViewHolder。这样,在回收者视图被重新利用时,RecyclerView会根据视图类型选择正确的ViewHolder,并跳过调用onBindViewHolder方法。

总结:

  • 回收者视图中的项目不触发onBindViewHolder是为了提高性能和效率。
  • 可以通过重写getItemViewType和onCreateViewHolder方法来实现回收者视图的处理。
  • 在回收者视图被重新利用时,RecyclerView会根据视图类型选择正确的ViewHolder,并跳过调用onBindViewHolder方法。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):提供弹性计算能力,满足不同规模业务的需求。产品介绍链接
  • 腾讯云云数据库MySQL版:提供稳定可靠的云端数据库服务,支持高性能、高可用的MySQL数据库。产品介绍链接
  • 腾讯云人工智能平台(AI Lab):提供丰富的人工智能算法和模型,帮助开发者快速构建和部署AI应用。产品介绍链接
  • 腾讯云物联网平台(IoT Hub):提供全面的物联网解决方案,帮助用户快速搭建和管理物联网设备。产品介绍链接
  • 腾讯云移动推送(TPNS):提供高效可靠的移动消息推送服务,帮助开发者实现消息推送功能。产品介绍链接
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

浅谈RecyclerView性能优化

众所周知,RecyclerView拥有四级缓存,它们分别是: Scrap缓存:包括mAttachedScrap和mChangedScrap,又称屏内缓存,参与滑动时回收复用,只是用作临时保存变量。...ViewCacheExtension:mViewCacheExtension又称拓展缓存,为开发预留缓存池,开发可以自己拓展回收池,一般不会用到。...RecyclerView回收原理 (1)如果是RecyclerView滚动情况下缓存(比如删除item)、重新布局时。...因为Scrap缓存池参与滚动回收复用,所以CacheView缓存池被称为一级缓存,又因为ViewCacheExtension缓存池是给开发定义缓存池,一般不用到,所以RecycledViewPool...4.情况使用setItemViewCacheSize(size)来加大CacheView缓存数目,用空间换取时间提高流畅度。

1.7K10

给中级Python开发13个练手项目,适合你

本文将列出十三个适合中级 Python 开发人员练手项目。 Web 项目设计 内容聚合器(Content Aggregator) 1. 技术细节 该项目设计主要目标是聚合内容。...使用 Python 标准 relibrary,就可以对输入文本运行查询字符串。当查询字符串匹配时,re 库将返回 None,当匹配时,将返回匹配字符串。...这样,测验创建可以确定用户在测验中每个问题上花多长时间。 同时拥有测验分享功能也很棒,这样用户可以在其他平台上与朋友分享有趣测验。 GUI 项目设计 MP3 播放器 1....由于它是一个闹铃,应用程序必须在规定时间播放音频。用于播放音频库有 pygame 库等。 在代码逻辑中,应用程序必须不断检查设置闹铃时间。到达时间后,它会触发一个播放闹钟铃声功能。...如此一来,应用程序就会在每天或每周特定时间发送通知,提醒用户们使用记账工具。 命令行项目设计 通讯录 1. 技术细节 该项目的主要目标是保存联系方式。

96330

给中级Python开发13个练手项目,适合你

Web 项目设计 内容聚合器(Content Aggregator) 1. 技术细节 该项目设计主要目标是聚合内容。首先,我们需要知道内容聚合器从哪些站点获取内容。...使用 Python 标准 relibrary,就可以对输入文本运行查询字符串。当查询字符串匹配时,re 库将返回 None,当匹配时,将返回匹配字符串。...这样,测验创建可以确定用户在测验中每个问题上花多长时间。 同时拥有测验分享功能也很棒,这样用户可以在其他平台上与朋友分享有趣测验。 GUI 项目设计 MP3 播放器 1....由于它是一个闹铃,应用程序必须在规定时间播放音频。用于播放音频库有 pygame 库等。 在代码逻辑中,应用程序必须不断检查设置闹铃时间。到达时间后,它会触发一个播放闹钟铃声功能。...如此一来,应用程序就会在每天或每周特定时间发送通知,提醒用户们使用记账工具。 命令行项目设计 通讯录 1. 技术细节 该项目的主要目标是保存联系方式。

1.2K40

给中级Python开发13个练手项目,适合你

本文将列出十三个适合中级 Python 开发人员练手项目。 Web 项目设计 内容聚合器(Content Aggregator) 1. 技术细节 该项目设计主要目标是聚合内容。...使用 Python 标准 relibrary,就可以对输入文本运行查询字符串。当查询字符串匹配时,re 库将返回 None,当匹配时,将返回匹配字符串。...这样,测验创建可以确定用户在测验中每个问题上花多长时间。 同时拥有测验分享功能也很棒,这样用户可以在其他平台上与朋友分享有趣测验。 GUI 项目设计 MP3 播放器 1....由于它是一个闹铃,应用程序必须在规定时间播放音频。用于播放音频库有 pygame 库等。 在代码逻辑中,应用程序必须不断检查设置闹铃时间。到达时间后,它会触发一个播放闹钟铃声功能。...如此一来,应用程序就会在每天或每周特定时间发送通知,提醒用户们使用记账工具。 命令行项目设计 通讯录 1. 技术细节 该项目的主要目标是保存联系方式。

1.1K20

RecyclerView 必知必会

RecyclerView回收机制有个重要概念,即将回收站分为Scrap Heap和Recycle Pool,其中Scrap Heap元素可以被直接复用,而不需要调用onBindViewHolder...这个问题描述是:当Item视图中有图片和文字,当更新文字并调用notifyItemChanged()时,文字改变同时图片会闪一下。...,但我认为根本没有必要费这么大劲对外暴露这个接口,因为我们完全可以把点击事件实现写在AdapteronBindViewHolder()中,暴露出来。...那么如何在破坏原有Adapter实现情况下完成呢? 这里引入装饰器(Decorator)设计模式,该设计模式通过组合方式,在破话原有类代码情况下,对原有类功能进行扩展。...RecyclerView局部刷新实现原理也是基于RecyclerView回收机制,即能直接复用ViewHolder就不调用onBindViewHolder()。

2.5K70

基于滑动场景解析RecyclerView回收复用机制原理

举个例子说,在 setLayoutManager、setAdapter、notifyDataSetChanged 或者滑动时等等这些场景都会触发回收复用机制工作。...但是如果只是 RecyclerView 滑动场景触发回收复用机制工作时,其实并不需要四级缓存都参与。 emmm,应该讲得还是有点懵,那就继续看下去吧,会一点一点慢慢分析。...再次向上滑动重新显示第一行5个卡位时,只有后面3个卡位触发onBindViewHolder() 方法,重新绑定数据呢?...也都是复用,而且也只有后面3个卡位触发onBindViewHolder() 重新绑定数据; 红框3是第二次向下滑动时日志,这次第四行5个卡位,前3个的卡位用 ViewHolder 是复用...Q2: 在这个过程中,为什么当 RecyclerView 再次向上滑动重新显示第一行5个卡位时,只有后面3个卡位触发onBindViewHolder() 方法,重新绑定数据呢?

2.8K60

Android知识笔记:记录 2 个 “容易误解” Android 知识点

答:事件先到DecorView Input系统 当用户触摸屏幕或者按键操作,首次触发是硬件驱动,驱动收到事件后,将该相应事件写入到输入设备节点,这便产生了最原生态内核事件。...我们先粗略地温习一下RecyclerView回收机制: RecyclerView在布局(自然滑动其实也是反复布局子View)时,会回收一些符合条件ViewHolder,它会根据ViewHolder状态来决定临时存放在哪个地方...,且把这些临时存放ViewHolder集合看作两种: 不需要经过onBindViewHolder能直接重用(mAttachedScrap、mCachedViews); 需要经过onBindViewHolder...被回调时,ViewHolder并没有真正被回收!...Adapter中有个onViewRecycled方法,看名字就知道是当Item被回收后回调。。。

87120

图解浏览器

这是一道十分常见面试题,不过大多数人回答这个问题时都不够系统和全面,可见这道题能够充分考察应试知识深度。 我画了一张图整理了浏览器导航渲染流程,下面我们来一起查缺补漏。...然后使用标记 - 清除算法进行垃圾回收,不过回收后会产生大量连续内存碎片。...在上图中,有一个元素在一帧中占据了一半。然后,在下一帧中,元素下移口高度 25%。...距离分数是任何不稳定元素在框架中(水平或垂直)移动最大距离除以最大尺寸(宽度或高度,以较大为准)。...在上图中,最大口尺寸是高度,不稳定元素已经移动了口高度 25%,所以距离分数是 0.25。

1.5K30

RecyclerView那点事儿

mDivider = a.getDrawable(0); // 回收TypedArray所占用空间 a.recycle(); setOrientation..., 在Item布局中 采用layout_margin方式 * * 主要是动态设置View高度 adapter类中 onBindViewHolder */ public class StaggeredGridLayuoutAct...// 单击事件 void onItemClick(View view ,int position); // 长按触发事件 void onItemLongClick...()中v.getTag()方法,这需要在onBindViewHolder()方法中设置和item相关数据 @Override public void onBindViewHolder(ViewHolder...中,典型观察模式,有点绕地方在于,这里涉及到两个观察模式使用,viewsetOnClickListener本来就是观察模式,我们将这个观察模式事件监听传递给了我们自己观察模式。

2K30

一篇博客理解Recyclerview使用

RecyclerView是support-v7包中新组件,是一个强大滑动组件,与经典ListView相比,同样拥有item回收复用功能,这一点从它名字Recyclerview即回收view也可以看出...封装了viewholder回收复用,也就是说RecyclerView标准化了ViewHolder,编写Adapter面向是ViewHolder而不再是View了,复用逻辑被封装了,写起来更加简单。...(holder.itemView, position); return true; } }); } } 最后附上项目完整代码: public class MainActivity...this.mDatas = datas; getRandomHeight(this.mDatas); } public interface onItemClickListener{ //条目被点击时触发回调...void onOnItemClick(View view,int position); //长按时触发回调 void onLongClick(View view,int position

61230

Android RecyclerView八个必会面试技巧

引言 在Android开发领域,RecyclerView是一项强大工具,用于处理大量数据高效显示。熟练掌握RecyclerView知识对于一名Android开发来说至关重要。...参考简答:RecyclerView相较于ListView优势在于: 灵活性: RecyclerView通过定制化布局管理器、适配器和动画效果,允许开发更灵活地定制列表布局和外观。...使用notifyItemInserted和notifyItemRemoved触发动画:在数据集合发生变化时,通过这两个方法触发自定义Animator执行。...Recycler池中维护了一个可回收ViewHolder队列,通过这个池来快速获取可重用ViewHolder。...这种机制大大提高了RecyclerView性能。 结语 RecyclerView作为Android开发重要组件,其灵活性和性能优势使得它在实际项目中得到广泛应用。

19620

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

前面在介绍列表视图和网格视图时,它们适配器代码都存在视图持有ViewHolder,因为Android对列表类视图提供了回收机制,如果某些列表项在屏幕上看不到了,则系统会自动回收相应视图对象。...随着用户下拉或者上拉手势,已经被回收列表项要重新加载到界面上,倘若每次加载都得从头创建视图对象,势必增加了系统资源开销。...视图持有设计理念固然美好,却苦了Android开发,每次由BaseAdapter派生新适配器类,都必须手工处理视图持有相关逻辑,实在是个沉重负担。...有鉴于此,循环视图适配器把视图持有重用逻辑剥离出来,由系统自行判断并处理持有重用操作。...、onCreateViewHolder、onBindViewHolder三个方法,以及视图持有类定义 class RecyclerGridAdapter(context: Context, private

1.8K41

Android开发之漫漫长途 XV——RecyclerView

RecyclerView还有许多优势,这里就不一一列举了,总体来说现在越来越多项目使用RecyclerView,许多老旧项目也渐渐使用RecyclerView来替代ListView。...(这个大小指的是高度,宽度) 那么接着onDraw()以及onDrawOver(),两作用是什么呢以及两之间有什么关系呢?...本篇解决办法与上面的并无本质上不同,只是我们在Adapter外面再包上一层,以类似装饰设计模式方式对Adapter进行无侵入式包装。...RecyclerView缓存机制 RecyclerView和ListView回收机制非常相似,但是ListView是以View作为单位进行回收,RecyclerView是以ViewHolder作为单位进行回收...视图将被丢弃到给定回收器中(即参数recycler)。 *回收器(即Recycler)可能更喜欢重用scrap视图。

2.2K20

偷懒新姿势,打造属于RecyclerView万能适配器Adapter和ViewHolder

前言 昨天开始接触江湖口碑很好RecyclerView,事实上,我已经被她强大所征服了!资源回收,数据绑定,布局显示,分割线,Item动画多个模块高度解耦,灵活优雅。...因此我们发现,这个adapter核心代码在与onBindViewHolder()中,作用是将数据跟视图(ViewHolder)绑定,可以给子类提供一个bindData()抽象方法。...RecyclerView强制我们使用ViewHolder模式,然而缺不可避免地要写findViewById代码,有没有办法写这样代码呢?甚至连ViewHolder都不写呢?当然可以!...private T findViewById(int viewId),核心成员变量是private SparseArray mViews; 不信可以写一句ViewHolder代码?...完整项目代码已上传至Github(https://github.com/TellH/RecyclerViewDemo)。

1.3K60
领券