热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

AndroidRecyclerview与ListView一起使用Viewholder

如何解决《AndroidRecyclerview与ListView一起使用Viewholder》经验,为你挑选了3个好方法。

我最近遇到了RecycleViewAndroid 5.0发布的android ,它似乎RecycleView只是一个封装的传统ListView,其中包含了ViewHolder模式,它促进了视图的重用,而不是每次都创建它.

使用的其他好处是RecycleView什么?如果两者在性能方面具有相同的效果,为什么会选择使用RecycleView`?

编辑

我发现人们提出了类似的问题并且答案没有定论,在这里添加它们以保存记录.

Recyclerview与Listview

我们应该使用RecyclerView来取代ListView吗?

为什么RecyclerView没有onItemClickListener()?和RecyclerView如何与Listview不同?



1> Aritra Roy..:

随着Android Lollipop的出现,RecyclerView正式成功.RecyclerView功能更强大,灵活,是ListView的主要增强功能.我会尽力给你一个详细的见解.

1)ViewHolder模式

在ListView中,建议使用ViewHolder模式,但它绝不是强制性的.对于RecyclerView,使用RecyclerView.ViewHolder类是必需的.这是ListView和RecyclerView之间的主要区别之一.

它使RecyclerView中的事情变得更复杂,但我们在ListView中遇到的许多问题都得到了有效解决.

2)LayoutManager

这是RecyclerView带来的另一项重大改进.在ListView中,唯一可用的视图类型是垂直ListView.甚至没有官方的方法来实现水平ListView.

现在使用RecyclerView,我们可以拥有一个

i)LinearLayoutManager - 支持垂直和水平列表,

ii)StaggeredLayoutManager - 支持交错列表等Pinterest,

iii)GridLayoutManager - 支持显示在Gallery应用程序中看到的网格.

最棒的是我们可以根据需要动态完成所有这些操作.

3)物品动画师

ListViews缺乏对良好动画的支持,但RecyclerView为它带来了全新的维度.使用RecyclerView.ItemAnimator类,动画视图变得如此简单直观.

4)项目装饰

对于ListViews,动态装饰项目(如添加边框或分隔线)绝非易事.但是在RecyclerView的情况下,RecyclerView.ItemDecorator类为开发人员提供了巨大的控制权,但却让事情变得更加耗时和复杂.

5)OnItemTouchListener

由于其AdapterView.OnItemClickListener接口,截取ListView上的项目很简单.但RecyclerView赋予更多的权力和控制它的开发由RecyclerView.OnItemTouchListener但它会使事情变得复杂一点的开发商.

简单来说,RecyclerView比ListView更具可定制性,并为开发人员提供了大量的控制和能力.


好答案.还有一些额外的巨大优势:RecyclerView在可见条目的前面和后面准备视图,如果你在后台获取位图,这是很好的.性能显着提高,尤其是使用RecyclerView.setHasFixedSize时.旧的ListView基于这样的前提:无法预先计算或缓存列表中条目的大小,这在滚动和执行布局时会导致疯狂的复杂化.需要一段时间才能适应它,但一旦你这样做,你就永远不会回去.

2> 小智..:

使用的另一个好处RecycleView是动画,它可以用两行代码完成

RecyclerView.ItemAnimator itemAnimator = new DefaultItemAnimator();
        recyclerView.setItemAnimator(itemAnimator);

但是窗口小部件仍然是原始的,例如,您无法创建页眉页脚.


而且你永远无法在这个意义上创建页眉和页脚.它们只是适配器中的其他视图类型.List视图将您的适配器包装在[`HeaderViewListAdapter`](http://developer.android.com/reference/android/widget/HeaderViewListAdapter.html)中,并在后台添加标头支持.使用`RecyclerView`,您就是控制者.

3> Mushtaq Jame..:

好吧,我挖这么点点发现比尔飞利浦这些宝石的文章上RecycleView

RecyclerView可以做的不仅仅是ListView,但RecyclerView类本身的责任要少于ListView.开箱即用,RecyclerView不会:

在屏幕上定位项目

动画视图

处理除滚动之外的任何触摸事件

所有这些东西都被用于ListView,但RecyclerView使用协作者类来代替这些工作.

您创建的ViewHolders也更加强大.它们是子类 RecyclerView.ViewHolder,它有一堆方法RecyclerView 用途.ViewHolders知道他们目前所处的位置,以及哪些项目ID(如果有的话).在这个过程中,ViewHolder 已被封为爵士.它曾经是ListView的工作,可以保持整个项目视图,并且ViewHolder只保留它的一小部分.

现在,ViewHolder在该ViewHolder.itemView 字段中保留所有内容,这是在ViewHolder的构造函数中为您分配的.


推荐阅读
  • td{border:1pxsolid#808080;}参考:和FMX相关的类(表)TFmxObjectIFreeNotification ... [详细]
  • 尽管在WPF中工作了一段时间,但在菜单控件的样式设置上遇到了一些基础问题,特别是关于如何正确配置前景色和背景色。 ... [详细]
  • 深入解析Unity3D游戏开发中的音频播放技术
    在游戏开发中,音频播放是提升玩家沉浸感的关键因素之一。本文将探讨如何在Unity3D中高效地管理和播放不同类型的游戏音频,包括背景音乐和效果音效,并介绍实现这些功能的具体步骤。 ... [详细]
  • 本文分享了作者在使用LaTeX过程中的几点心得,涵盖了从文档编辑、代码高亮、图形绘制到3D模型展示等多个方面的内容。适合希望深入了解LaTeX高级功能的用户。 ... [详细]
  • 在Android中实现黑客帝国风格的数字雨效果
    本文将详细介绍如何在Android平台上利用自定义View实现类似《黑客帝国》中的数字雨效果。通过实例代码,我们将探讨如何设置文字颜色、大小,以及如何控制数字下落的速度和间隔。 ... [详细]
  • 本文介绍了用户界面(User Interface, UI)的基本概念,以及在iOS应用程序中UIView及其子类的重要性和使用方式。文章详细探讨了UIView如何作为用户交互的核心组件,以及它与其他UI控件和业务逻辑的关系。 ... [详细]
  • 汇总了2023年7月7日最新的网络安全新闻和技术更新,包括最新的漏洞披露、工具发布及安全事件。 ... [详细]
  • ArcBlock 发布 ABT 节点 1.0.31 版本更新
    2020年11月9日,ArcBlock 区块链基础平台发布了 ABT 节点开发平台的1.0.31版本更新,此次更新带来了多项功能增强与性能优化。 ... [详细]
  • 本文详细介绍如何安装和配置DedeCMS的移动端站点,包括新版本安装、老版本升级、模板适配以及必要的代码修改,以确保移动站点的正常运行。 ... [详细]
  • Python3爬虫入门:pyspider的基本使用[python爬虫入门]
    Python学习网有大量免费的Python入门教程,欢迎大家来学习。本文主要通过爬取去哪儿网的旅游攻略来给大家介绍pyspid ... [详细]
  • 本文详细介绍如何在 Apache 中设置虚拟主机,包括基本配置和高级设置,帮助用户更好地理解和使用虚拟主机功能。 ... [详细]
  • 网络流24题——试题库问题
    题目描述:假设一个试题库中有n道试题。每道试题都标明了所属类别。同一道题可能有多个类别属性。现要从题库中抽取m道题组成试卷。并要求试卷包含指定类型的试题。试设计一个满足要求的组卷算 ... [详细]
  • Android 中的布局方式之线性布局
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 本文将详细探讨 Python 编程语言中 sys.argv 的使用方法及其重要性。通过实际案例,我们将了解如何在命令行环境中传递参数给 Python 脚本,并分析这些参数是如何被处理和使用的。 ... [详细]
  • 本文是对《敏捷软件开发:原则、模式与实践》一书的深度解析,书中不仅探讨了敏捷方法的核心理念及其应用,还详细介绍了面向对象设计的原则、设计模式的应用技巧及UML的有效使用。 ... [详细]
author-avatar
快乐生活HAPPY-GO
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有