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

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

如何解决《我们应该使用RecyclerView来取代ListView吗?》经验,为你挑选了4个好方法。

Android文档说:

RecyclerView小部件是ListView的更高级和灵活的版本.此窗口小部件是一个容器,用于显示可以通过维护有限数量的视图而非常有效地滚动的大型数据集.如果数据集合的元素在运行时根据用户操作或网络事件而更改,请使用RecyclerView小部件

ListView如果效率无关紧要,实际上可以做到以上所有,我们在RecyclerView用来替换时发现了很多问题ListView:

    列表项选择没有onItemClickListener() - 解决方案

    列表项之间没有分隔符 - 解决方案

    没有内置重叠选择器,当您单击列表项 - 解决方案时没有可视反馈

    列表头没有addHeaderView - 解决方案

也许更多问题......

因此,当我们使用RecyclerView替换时ListView,我们必须做更多的额外编码才能达到相同的效果ListView.

题:

是否值得我们更换ListViewRecyclerView完全?

如果不是那么在这种情况下,我们应该更好地利用RecyclerView替代ListView,反之亦然?

yigit.. 117

如果ListView适合您,则没有理由进行迁移.如果您正在编写新的UI,那么使用RecyclerView可能会更好.

当您需要自定义列表或想要更好的动画时,RecyclerView功能强大.ListView中的这些便捷方法给人们带来了很多麻烦,这就是为什么RecyclerView为他们提供了更灵活的解决方案.

您需要为迁移进行的主要更改是在适配器中.如果您想继续通话notifyDataSetChanged,则会失去大部分动画和装订优势.但是,如果您可以更改适配器以分派详细的通知事件(添加/删除/移动/更新),那么您可以获得更好的动画和性能.这些事件让RecyclerView选择了正确的动画,也有助于避免不必要的onBind调用.如果您的项目视图很复杂,您将获得巨大的收益.此外,未来,RecyclerView将会有更多组件.



1> yigit..:

如果ListView适合您,则没有理由进行迁移.如果您正在编写新的UI,那么使用RecyclerView可能会更好.

当您需要自定义列表或想要更好的动画时,RecyclerView功能强大.ListView中的这些便捷方法给人们带来了很多麻烦,这就是为什么RecyclerView为他们提供了更灵活的解决方案.

您需要为迁移进行的主要更改是在适配器中.如果您想继续通话notifyDataSetChanged,则会失去大部分动画和装订优势.但是,如果您可以更改适配器以分派详细的通知事件(添加/删除/移动/更新),那么您可以获得更好的动画和性能.这些事件让RecyclerView选择了正确的动画,也有助于避免不必要的onBind调用.如果您的项目视图很复杂,您将获得巨大的收益.此外,未来,RecyclerView将会有更多组件.


人们使用RV w /更多类型然后没有任何问题和良好的性能.您的代码中还有其他问题.您应该使用systrace/traceview并查看最新情况.
如果我能给你100个赞成票,我愿意.`notifyDataSetChanged()`方法导致我的`RecyclerView`不断要求新的`ViewHolders`,从而消除了`ViewHolder`模式带来的好处.寻找解决方案我发现你的评论几乎可以解决我的问题:D谢谢!

2> Aritra Roy..:

据我所知,如果ListView满足您应用程序的所有当前需求并满足所有用例,则无需使用RecyclerView替换它.

RecyclerView以增加开发人员的复杂性为代价,为开发人员提供了巨大的动力.有些事情可以在ListView中轻松完成,现在可以花费很多不必要的努力.

但是,有些东西是ListView永远无法做到的,比如令人惊叹的LayoutManager功能,可以让你动态地将布局更改为水平,垂直,网格或交错网格.

我在这里写了一个关于这个主题的详细答案.


当然,RecyclerView增加了复杂性,但至少它为您正确实现了ViewHolder模式。

3> Fantômas..:

1您可以使用界面提供单击侦听器.我也将这种技术用于ListViews.
2没有分隔符:只需在行中添加一个宽度为match_parent且高度为1dp的视图,并为其指定背景颜色.
3只需使用StateList选择器作为行背景. ListViews中也可以避免使用
4个 addHeaderView:只需将Header 放在 View 之外.

因此,如果您关心效率,那么是的,用RecyclerView替换ListView是个好主意.


这些不是我的问题,我已经为每个问题解决方案提供了链接
见**问题**
看这里:http://www.grokkingandroid.com/first-glance-androids-recyclerview/

4> Elletlar..:

直到最近,我仍在使用ListView获得非常简单的列表。例如,如果我想显示一个简单的文本选项列表...

我基于“人为因素”做出该决定,即如果性能不重要,则用更少的代码创建一个简单的ListView会更好。我经常想到大学的一位教授,他喜欢这样说:“我的老师帕斯卡(Pascal)的发明家伟大的尼古拉斯·沃斯(Niclaus Wirth)曾经说过,如果一个程序有50行以上的代码,那肯定是错的……”

但是使我停止使用ListView的原因是,它最近与RelativeLayout一起被移到了Android Studio设计工具的“旧版”类别中。

我认为这是“弃用”的“软”形式。如果实际上不建议使用它,并且所有尽职尽责的开发人员将其代码移至RecyclerView,那将造成破坏性。

此外,ListView的简介在顶部警告说RecyclerView是更好的选择:“要使用更现代,灵活和高效的方法来显示列表,请使用RecyclerView。”
https://developer.android.com/reference/android/widget/ListView

另外,ListView指南仍在讨论游标加载器,但是getSupportCursorLoader()本身在API 28中已被弃用
。https://developer.android.com/guide/topics/ui/layout/listview

Android Studio的最新增强功能:

文件->新建->片段->片段(列表)

这使我们可以使用基本文本填充完整的RecylerView。这摆脱了我使用ListView的最后一个真实原因,因为现在设置基本的RecylerView变得一样容易。

总而言之,我不打算将ListView完全用于新开发,因为将其标记为“旧版”是离弃用它仅一步之遥。


推荐阅读
  • Android 中的布局方式之线性布局
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 使用TabActivity实现Android顶部选项卡功能
    本文介绍如何通过继承TabActivity来创建Android应用中的顶部选项卡。通过简单的步骤,您可以轻松地添加多个选项卡,并实现基本的界面切换功能。 ... [详细]
  • Flutter 核心技术与混合开发模式深入解析
    本文深入探讨了 Flutter 的核心技术,特别是其混合开发模式,包括统一管理模式和三端分离模式,以及混合栈原理。通过对比不同模式的优缺点,帮助开发者选择最适合项目的混合开发策略。 ... [详细]
  • 在Android中实现黑客帝国风格的数字雨效果
    本文将详细介绍如何在Android平台上利用自定义View实现类似《黑客帝国》中的数字雨效果。通过实例代码,我们将探讨如何设置文字颜色、大小,以及如何控制数字下落的速度和间隔。 ... [详细]
  • 尽管在WPF中工作了一段时间,但在菜单控件的样式设置上遇到了一些基础问题,特别是关于如何正确配置前景色和背景色。 ... [详细]
  • td{border:1pxsolid#808080;}参考:和FMX相关的类(表)TFmxObjectIFreeNotification ... [详细]
  • 本文介绍了如何通过C#语言调用动态链接库(DLL)中的函数来实现IC卡的基本操作,包括初始化设备、设置密码模式、获取设备状态等,并详细展示了将TextBox中的数据写入IC卡的具体实现方法。 ... [详细]
  • 本文探讨了如何在游戏启动画面中移除广告,特别是在游戏数据加载期间(大约5-6秒)广告会短暂显示的问题。通过调整XML布局和代码逻辑,可以实现广告的延迟加载或完全移除。 ... [详细]
  • android开发分享荐                                                         Android思维导图布局:效果展示及使用方法
    思维导图布局的前身是树形布局,对树形布局基本使用还不太了解的朋友可以先看看我写的树形布局系列教程,了解了树形布局的使用方法后再来阅读本文章。先睹为快来看看效果吧,横向效果如下:纵向 ... [详细]
  • 本文详细介绍了如何在Android应用中实现重复报警功能。示例代码可在以下路径找到:https://developer.android.com/samples/RepeatingAlarm/index.html。首先,我们将从Manifest文件开始分析。 ... [详细]
  • 长期从事ABAP开发工作的专业人士,在面对行业新趋势时,往往需要重新审视自己的发展方向。本文探讨了几位资深专家对ABAP未来走向的看法,以及开发者应如何调整技能以适应新的技术环境。 ... [详细]
  • 在尝试通过自定义端口部署Spring Cloud Eureka时遇到了连接失败的问题。本文详细描述了问题的现象,并提供了有效的解决方案,以帮助遇到类似情况的开发者。 ... [详细]
  • 本文详细介绍了如何在Spring框架中设置事件发布器、定义事件监听器及响应事件的具体步骤。通过实现ApplicationEventPublisherAware接口来创建事件发布器,利用ApplicationEvent类定义自定义事件,并通过ApplicationListener接口来处理这些事件。 ... [详细]
  • 在1995年,Simon Plouffe 发现了一种特殊的求和方法来表示某些常数。两年后,Bailey 和 Borwein 在他们的论文中发表了这一发现,这种方法被命名为 Bailey-Borwein-Plouffe (BBP) 公式。该问题要求计算圆周率 π 的第 n 个十六进制数字。 ... [详细]
  • 本文详细介绍了 `org.apache.tinkerpop.gremlin.structure.VertexProperty` 类中的 `key()` 方法,并提供了多个实际应用的代码示例。通过这些示例,读者可以更好地理解该方法在图数据库操作中的具体用途。 ... [详细]
author-avatar
爱-雨轩_627
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有