RecyclerView面试问答

news2024/11/19 1:38:25

RecycleView 和 ListView对比:
使用方法上
ListView:继承重写 BaseAdapter,自定义 ViewHolder 与 converView优化。

RecyclerView: 继承重写 RecyclerView.Adapter 与 RecyclerView.ViewHolder。设置 LayoutManager 来展示不同的布局样式

ViewHolder的编写规范化,ListView是需要自己定义的,而RecyclerView是规范好的;
RecyclerView复用item全部搞定,不需要像ListView那样setTag()与getTag();
RecyclerView多了一些LayoutManager工作,但实现了布局效果多样化;
2. 动画api
在RecyclerView中自带动画效果,例如:notifyItemChanged(), notifyDataInserted(), notifyItemMoved()等等;同时内置有许多动画API,如果需要自定义动画效果,可以通过实现(RecyclerView.ItemAnimator类)完成自定义动画效果,然后调用RecyclerView.setItemAnimator();
但是ListView并没有实现动画效果,需要在Adapter自己自定义;
3. 缓存区别
ListView和RecyclerView最大的区别在于数据源改变时的缓存的处理逻辑,ListView有二级缓存,
RecycleBin在layout的过程中便于view重用,RecycleBin有两级存储:ActiveViews和ScrapViews。
ActiveViews存储的是layout开始的时候屏幕上那些view。layout结束后,所有ActiveViews中的view被移动到ScrapViews中。
ScrapViews中的views是那些可能被adapter重新用到的view,以避免重新创建不必要的view。
而RecyclerView则是更加灵活地采用了四级缓存。
在这里插入图片描述

  • RecyclerView缓存的item的复用机制
    触摸角度
    在这里插入图片描述
    layout角度的话少一个scrapView的调用
    在这里插入图片描述
    在这里插入图片描述

设置缓存相关代码方法

//设置mCahceView的缓存数量
RecyclerView.setItemViewCacheSize

 public abstract static class ViewCacheExtension {
   
        @Nullable
        public abstract View getViewForPositionAndType(@NonNull Recycler recycler, int position,
                int type);
    }
//自定义缓存ImageCacheExtension继承RecyclerView.ViewCacheExtension,一般不自己写,你写了之后就不会走onBindView了,只会走getViewForPositionAndType,你可以从onBindView方法调用你的缓存方法,毕竟这个方法对于同个Viewholder的第二次回调只会发生在recyclerPool中,如果优先了ViewCacheExtension,那就只会走自己的缓存。
ImageCacheExtension cacheExtension = new ImageCacheExtension();

//自定义Viewholder的缓存和获取缓存
RecyclerView recyclerView = findViewById(R.id.recycler_view);
recyclerView.setViewCacheExtension(cacheExtension);

recyclerView.setAdapter(adapter);

RecyclerViewPool

RecyclerView.RecycledViewPool pool = new RecyclerView.RecycledViewPool();
RecyclerView.ViewHolder type1Holder = new Type1ViewHolder(LayoutInflater.from(this).inflate(R.layout.item_type_1, null))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/928124.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数仓建设系列之三】数仓建模方式及如何评估数仓完善性

【数仓建设系列之三】数仓建模方式及如何评估数仓完善性 上篇文章我们对数仓的分层架构及核心概念做了简单介绍,同时也指明DW层是数仓建模的核心层。本篇文章,将详细从常见的维度模型建设手段及如何评估数仓建设的完善性展开讨论。 一、数仓维度建模 ​…

Azure - AzCopy学习

使用 AzCopy 将本地数据迁移到云存储空间 azcopy login 创建存储账号 ./azcopy login --tenant-id 40242385-c249-4746-95dc-4a0b64d49dc5这里的—tenant-id 在下面的地方查看:目录 ID;需要拥有Storage Blob Data Owner 的权限账号下可能会有很多目录&am…

SMC_TRAFOF_5Axes (FB)_标准龙门5轴

正计算: 电机位置》空间位姿 的正计算。 用于图形5轴控件的展示。 刀具长度 [u] 【脉冲当量】 电机转1圈是5毫米 电机转1圈要50000脉冲 如果刀具长5毫米,那么刀具长度u50000脉冲当量 输入输出: X轴 Y轴 Z轴 A轴【绕z轴旋转】东南西北方…

SFTP和SCP:哪种才是企业文件传输的可靠选择

文件传输在企业发展和业务拓展中越来越重要。为了保证数据的安全和传输的效率,企业需要选择合适、安全且高效的文件传输方式。在这种情况下,SFTP和SCP成为了企业文件传输的热门选择。 本文将详细介绍SFTP和SCP的特点,以及它们如何成为企业文…

ubuntu学习(四)----文件写入操作编程

1、write函数的详解 ssize_t write(int fd,const void*buf,size_t count); 参数说明: fd:是文件描述符(write所对应的是写,即就是1) buf:通常是一个字符串,需要写入的字符串 count:是每次写入的字节数…

【学习FreeRTOS】第19章——FreeRTOS低功耗模式Tickless

1.低功耗模式简介 很多应用场合对于功耗的要求很严格,比如可穿戴低功耗产品、物联网低功耗产品等一般MCU都有相应的低功耗模式,裸机开发时可以使用MCU的低功耗模式。FreeRTOS也提供了一个叫Tickless的低功耗模式,方便带FreeRTOS操作系统的应…

每日汇评:由于鲍威尔鹰派的讲话,黄金可能重新回到 1900 美元区域

1、金价暂停了四天的上涨趋势,但有望创下六周以来最好的一周; 2、在鲍威尔在杰克逊霍尔研讨会上发表讲话之前,美元恢复平静; 3、在 RSI 看跌的情况下,金价与 21 日移动平均线阻力位 1919 美元作斗争; 金…

免费PPT素材网站,我推荐这6个

找PPT素材、模板,就上这6个网站,免费下载,建议收藏~ 菜鸟图库 https://www.sucai999.com/search/ppt/0_0_0_1.html?vNTYwNDUx 菜鸟图库网有非常丰富的免费素材,像设计类、办公类、自媒体类等素材都很丰富。PPT模板种类很多&…

适配小程序隐私保护指引设置

由于小程序发布了一个公告,那么接下来就是怎么改简单的问题了。毕竟不太想大的改动历史上的代码。尽量简单的适配隐私策略就可以了。 整体思路也是参考现在App普遍的启动就让用户同意隐私策略,不同意不让用,同意了之后才能够继续使用。 公告…

英伟达挖走小鹏汽车高管吴新宙!何小鹏亲自送行 | 百能云芯

8月25日消息,英伟达公司挖来小鹏汽车自动驾驶副总裁吴新宙,任命他为自动驾驶产品主管,该职位将于8月25日正式生效。 据悉,小鹏汽车董事长何小鹏在个人微博上晒出了一张与吴新宙以及英伟达CEO黄仁勋的合影,并透露即将展…

访学、博后参考|加拿大十大名校简介

上期我们介绍了加拿大各省所在大学的分布情况,本期知识人网小编整理出加拿大十大名校简介,供申请者参考。 1、多伦多大学(University of Toronto)(University of Toronto)(University of Toront…

最新绕过目标域名CDN进行信息收集技术

绕过目标域名CDN进行信息收集 1.CDN简介及工作流程 CDN(Content Delivery Network,内容分发网络)的目的是通过在现有的网络架构中增加一层新的Cache(缓存)层,将网站的内容发布到最接近用户的网…

一次harbor升级导致镜像项目访问无权限问题

一、问题背景 将环境中现运行的harbor版本升级到2.6.2版本,相关同事升级完,发现有部分镜像项目点进去报无权限问题,镜像项目无法使用,但是也有部分项目是可以正常提供使用的。 二、问题处理过程 1、根据报错反馈没权限&#xff…

Thinkphp内核微信拼团购物商城小程序源码

Thinkphp内核开发的微信拼团购物商城小程序源码,支持微信支付,站长亲测完美。 下载地址:https://bbs.csdn.net/topics/616764816

电脑文件删除了可以找回吗?分享一种简单恢复删除电脑文件办法!

电脑文件删除了可以找回吗?可以。在原理上讲电脑删除的文件是有希望恢复的,因为操作系统在删除文件的时候并会不会立刻将文件彻底删除。当文件被删除的时候,其文件记录被删除,并且被文件占用的磁盘空间被标记为空闲。 这样对于用户…

【HCIP】16.MPLS LDP

LDP是MPLS的一种控制协议,相当于传统网络中的信令协议,负责FEC的分类、标签的分配以及LSP的建立和维护等操作。LDP规定了标签分发过程中的各种消息以及相关处理过程。 LDP的工作过程主要分为两部分: LSR之间建立LDP会话。LSR之间基于LDP会话…

半导体低压热氧工艺中的真空度精密控制解决方案

摘要:在目前的各种半导体材料热氧化工艺中,往往需要对正负压力进行准确控制并对温度变化做出快速的响应,为此本文提出了热氧化工艺的正负压力控制解决方案。解决方案的核心是基于动态平衡法分别对进气和排气流量进行快速调节,具体…

Java——一个Java实体类,表示一个试题的模型

这段代码是一个Java实体类,表示一个试题的模型。 该实体类具有以下属性: id:题号,表示试题的编号。title:题目,表示试题的题目内容。optionA:选项A,表示试题的选项A。optionB&#…

【智算中心】GPU是如何改变世界的

现在有市场消息表示,NVIDIA正计划减少A800 GPU的产量,以促进其更高端的H800 GPU 的销售。很显然NVIDIA是希望从H800 GPU上获得更多销售量,从中国市场获得更多利益。而且最近一段时间有传闻美国要彻底封杀AI芯片的出口,让国内甚至连…

错误:依赖检测失败: mysql-community-libs(x86-64) >= 5.7.9 被 (已安裝) mysql-community-li

错误: 错误原因:没有删除之前安装的依赖问题 解决办法: yum remove mysql-libs 再用下面指令检查一遍: rpm -qa | grep mysql 如果有还未清理的,用下面指令: rpm -e xxx