内容简介:原标题: 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 原理:
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 那样编写
getter
和setter
。 - 附加功能:例如,
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)
未完待续。。。
欢迎关注 Kotlin 中文社区!
中文官网:www.kotlincn.net/
中文官方博客:www.kotliner.cn/
公众号:Kotlin
知乎专栏:Kotlin
CSDN:Kotlin中文社区
掘金:Kotlin中文社区
简书:Kotlin中文社区
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- C#列表到列表转换
- Python笔记(二):列表+列表数据处理+函数
- python创建列表和向列表添加元素方法
- 在Bootstrap开发框架中使用bootstrapTable表格插件和jstree树形列表插件时候,对树列表条件和查询...
- Python 列表(List)
- 四)redis 列表类型
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。