[译]Android 中 Kotlin 与 RecyclerView 高性能列表

栏目: IOS · Android · 发布时间: 4年前

内容简介:原标题: Kotlin & RecyclerView for High Performance Lists in Android原文地址:www.andreasjakl.com原文作者: Andreas Jakl

原标题: Kotlin & RecyclerView for High Performance Lists in Android

原文地址:www.andreasjakl.com

原文作者: Andreas Jakl

RecyclerView 是在 Android 上显示滚动列表的最佳方法。它确保了高性能和平滑滚动,同时提供具有灵活布局的列表元素。结合Kotlin 的现代语言功能,与传统的 Java 方法相比,RecyclerView 的代码开销大大降低。

示例项目:PartsList - 入门

在本文中,我们将介绍一个示例场景:维护应用程序的滚动列表,列出机器部件:“PartsList”。但是,此方案仅影响我们使用的字符串 - 您可以针对您需要的任何用例复制此方法。

要开始使用,请使用 Android Studio 3+ 创建一个新的 Android 应用。确保启用 Kotlin 支持,并为 MainActivity 选择 “Empty” 模板。或者,如果您不想手动编写以下步骤的代码,请从 GitHub 下载完成的 源码

什么是 RecyclerView?

Android 中的屏幕列表由多个子视图组成。每个都有一个或多个视图的布局。例如,电子邮件应用会向您显示多封电子邮件; 这些项目中的每一项都包括主题,发件人姓名和一堆其他信息。

解析子视图的 XML 布局并将其扩展到类的实例中是一项消耗性能的操作。快速滑动会对手机性能造成巨大压力。目标是始终坚持每秒60帧。但是,这每帧只剩下不到17毫秒的计算时间。

RecyclerView的主要技巧是重新使用列表中的子视图。一旦子视图 滚出可见区域,它就基本上被放入队列中。迟早,当新的子视图滚动时会再次用到它。然后,子视图的 UI 文本内容将被替换。下图显示了这个(简化的)RecyclerView 原理:

[译]Android 中 Kotlin 与 RecyclerView 高性能列表

RecyclerView流程

不幸的是,这种有效的方法需要一些架构背景。刚开始看起来可能感到陌生。然而,一旦您拥有所有组件,就可以轻松的进行自定义。

[译]Android 中 Kotlin 与 RecyclerView 高性能列表

使用RecyclerView需要配置/实现以下组件:

  • RecyclerView:管理一切。它主要由Android预先编写。您提供组件和配置。
  • Adapter:您将花费大部分时间编写此类。它连接到数据源。在RecyclerView的指示下,它会创建或更新列表中的各个项目。
  • ViewHolder:一个简单的类,用于分配/更新视图项中的数据。重新使用视图时,将覆盖先前的数据。
  • Data source:您喜欢的任何东西 - 从简单的数组到完整的数据源。您的适配器与之交互。
  • LayoutManager:负责将所有单独的视图项放在屏幕上,并确保它们获得所需的屏幕空间。

数据源和Kotlin数据类

我们的数据源是一个简单的列表/数组。该列表由自定义类的实例组成。您可以在应用程序中对这些进行硬编码,也可以动态创建它们 - 例如,基于来自在线源的 HTTP REST 请求。

Kotlin有一个很好的功能,可以简化数据类的编写。此方法适用于仅包含数据但不包含任何操作的所有类。我们的示例数据类称为 PartData ,因为它存储有关维护应用程序的计算机部件的信息。

data class PartData ( val id: Long, val itemName: String)
复制代码

对于数据类,Kotlin自动生成所有实用程序函数:

  • 属性:您不再需要像普通 Java 那样编写 gettersetter
  • 附加功能:例如, equals()hasCode()toString()copy()

Antonio Leiva 写了一篇很棒的文章,在相同数据类的情况下将 Java 与 Kotlin 进行比较。您可以节省大约80%的代码并仍然得到相同的结果。

您像任何其他类一样实例化 Kotlin 数据类。请注意,Kotlin 不使用 new 语句,因此我们只使用类名并将值提供给构造函数参数。添加该代码的 nCreate() 您的 MainActivity。

var partList = ArrayList<PartData>()
partList.add(PartData(100411, "LED Green 568 nm, 5mm"))
partList.add(PartData(101119, "Aluminium Capacitor 4.7μF"))
partList.add(PartData(101624, "Potentiometer 500kΩ"))
// ...

复制代码

列表项目布局

RecyclerView 中的每个项目都需要自定义布局。您可以使用任意与 Activity 布局相同的方式创建这个文件:在 Android Studio 的 Android-style 项目视图中,打开 app > res > layout。右键单击 "layout" 文件夹名称,然后选择 New > Layout resource file。创建一个名为 part_list_item.xml 的布局。

对于示例用例,请使用以下属性:

LinearLayout
match_parent
wrap_content
16dp

接下来,将两个子项添加到布局中。我们将使用 TextView的。只要确保你给他们有用的ID,因为我们需要这些来分配Kotlin代码中的文本:

  • Id 1: @+id/tv_part_item_name (larger text size)
  • Id 2: @+id/tv_part_id (smaller text size)
[译]Android 中 Kotlin 与 RecyclerView 高性能列表

未完待续。。。

欢迎关注 Kotlin 中文社区!

中文官网:www.kotlincn.net/

中文官方博客:www.kotliner.cn/

公众号:Kotlin

知乎专栏:Kotlin

CSDN:Kotlin中文社区

掘金:Kotlin中文社区

简书:Kotlin中文社区


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Python 3学习笔记(上卷)

Python 3学习笔记(上卷)

雨痕 / 电子工业出版社 / 2018-1 / 89

经过9 年的发展,Python 3 生态已相当成熟。无论是语言进化、解释器性能提升,还是第三方支持,都是如此。随着Python 2.7 EOF 日趋临近,迁移到Python 3 的各种障碍也被逐一剔除。是时候在新环境下学习或工作了。 人们常说Python 简单易学,但这是以封装和隐藏复杂体系为代价的。仅阅读语言规范很难深入,亦无从发挥其应有能力,易学难精才是常态。《Python 3学习笔记(......一起来看看 《Python 3学习笔记(上卷)》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具