首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Kotlin入门(23)适配器的进阶表达

现在由Kotlin实现循环视图的适配器类,综合前面两小节提到的优化技术,加上视图持有者的自动重用,适配器代码又得到了进一步的精简。...为方便理解循环适配器的Kotlin编码,下面以微信的公众号消息列表为例,给出对应的消息列表Kotlin代码: //ViewHolder在构造时初始化布局的控件对象 class RecyclerLinearAdapter...    //绑定视图持有者的各个控件对象,需要子类重写     override abstract fun onBindViewHolder(holder: RecyclerView.ViewHolder...下面便是个循环视图的网格适配器,它实现了类似淘宝主页的网格频道栏目,具体的Kotlin代码如下所示: //把公共属性和公共方法剥离到基类RecyclerBaseAdapter, //此处仅需实现getItemCount...尤其是最后的两种实现方式,分别运用了Kotlin的多项综合技术,才能集Kotlin精妙语法之大成。 点此查看Kotlin入门教程的完整目录

1.8K41
您找到你想要的搜索结果了吗?
是的
没有找到

Jetpack Compose Beta 版现已发布!

您可以在 Android 视图中嵌入 Compose UI,并在 Compose 中使用视图。我们在 互操作性文档 中提供了多种应用策略。...除了视图互操作性,我们还 集成了常用开发库,帮助您将 Compose 添加到现有应用,而无需重写或重新设计应用。...Compose 完全使用 Kotlin 构建,可利用其优秀的 语言特性 提供功能强大、简洁且直观的 API。例如,借助 协程,我们可以编写更简单的异步 API,描述手势、动画或滚动。...现在时机正好,不妨开始学习 Jetpack Compose,并规划如何在接下来的项目中使用该工具包。...我们期待收到您对在应用采用 Compose 的 反馈,您也可以在 Kotlin Slack 的 #compose 频道参与讨论或在下方留言区和我们分享。

5.6K10

实践 | Google IO 应用是如何适配大尺寸屏幕 UI 的?

在程序运行过程,我们可以通过 Kotlin 的安全调用操作符 (?.) 来根据当前的设备配置确定呈现给用户哪一个视图。...资源限定符的局限 搜索应用栏也在不同屏幕内容下显示不同内容。...当您在搜索时,可以选择不同的标签来过滤需要显示搜索结果,我们也会把当前生效的过滤标签显示在以下两个位置之一: 窄模式时位于搜索文本框下方,宽模式时位于搜索文本框的后面。...△ 平板横屏时的搜索应用栏 (窄模式) △ 平板竖屏时的搜索应用栏 (宽模式) 此前,我们通过在搜索 Fragment 的视图层次的应用栏部分使用 标签,并提供两种不同版本的布局来实现此功能...要实现这一特性,请参阅搜索 布局 的应用栏部分代码。请注意两个 ViewStub 元素 (第 27 和 28 行)。

2K20

【翻译】Kotlin 1.1 新版本同样适合安卓开发者

众所周知, RecyclerView 和 ListView 一样没有标准的处理单项视图点击事件的方式,所以我们必须动手自己写。...) : RecyclerView.Adapter() { ... } 同时你的 ViewHolder 可能也需要接收这个监听事件,把它赋值给这个视图的点击事件监听者...想必你有可能已经知道 Kotlin 协程并不是一个库或者一种特殊的实现,它是一种语言特性,允许我们通过它创造实用的库。...因此,即使我们同样实现的代码看上去大同小异,但很重要的一点就是我们懂得协程归更到底是创建了子线程并在主线程返回得到结果,这在安卓尤为重要。...另外一个,将会有一个新的潮流就是使用 @JvmOverloads 来实现自定义视图组件的构造函数,这从文字意义上来说就是可以用一句话来实现自定义视图的构造函数(不过确实是很长的一句话),通过一个构造函数和默认的参数值

1.1K60

ViewBinding 与 Kotlin 委托双剑合璧

ViewBinding 是 Android Gradle Plugin 3.6 中新增的特性,用于更加轻量地实现视图绑定(即视图与变量的绑定),可以理解为轻量版本的 DataBinding。...ViewBinding 是 Android Gradle Plugin 3.6 中新增的特性,用于更加轻量地实现视图绑定(即视图与变量的绑定),可以理解为轻量版本的 DataBinding。...DataBinding 存在注解处理,编译速度略逊色于 Kotlin Synthetics 和 ViewBinding; 4、支持 Kotlin & Java: Kotlin Synthetics...2.1 添加配置 视图绑定功能按模块级别启用,启用的模块需要在模块级 build.gralde 添加配置。例如: build.gradle android { ......在老版本 Java ,传递代码块需要使用匿名内部类实现,而使用 lambda 表达式甚至连函数声明都不需要,可以直接传递代码块作为函数值; 问题 6、Fragment::requireView 是什么

1.6K20

kotlin-android-extensions插件也被废弃了?扶我起来

当然这个我认为并不是主要原因,因为现在Google开发的各种新技术都在全面兼容Kotlin,而不再怎么去考虑Java了,协程、Jetpack Compose等。 那么主要原因是什么呢?...这可能就要从kotlin-android-extensions插件的实现原理去理解了。...这样当下次再获取相同控件实例的话,就可以直接从HashMap缓存获取了。 这就是kotlin-android-extensions插件的实现原理,其实还是非常简单的。...但由于Kotlin空类型系统的存在,导致为了实现这一简单的功能,需要额外编写一些看上去很奇怪的代码,上述代码就是如此。...而RecyclerView把ListView的这个普遍应用的最佳实践直接作为默认实现集成了进去,所以只要我们使用RecyclerView,就一定要写ViewHolder。

2.7K31

2018 年初值得关注的 25 个新 Android 库和项目

通过使用这个库,你可以实现如上面所示的 TextView 的自定义下划线。 README 的示例通俗易懂,而且易于使用。...WindowImageView https://github.com/Bleoo/WindowImageView 这是一个非常有趣的库,可以用来在 RecyclerView 展示 ImageView,...RecyclerBanner https://github.com/renjianan/RecyclerBanner 这并非一个库,而是一个示例应用,向你展示了如何使用 RecyclerView 创建轮播视图...它由 Alex Lockwood 创建并在 MIT 许可下发布。...下面的例子显示了在运行 avdo 之前和之后的 VectorDrawable 的内容 就这些了。希望你能喜欢这份清单。如果你知道在过去三个月内发布的其他优秀的库,并且我没有提到的话,请在评论告诉我。

903100

无处安放的业务逻辑使你在Android架构上吃了多少生硬的亏,是否还在生搬硬套?

3.2 Android视图开发可以借鉴函数式编程思想 一、模块化的意义何在?...model的title,但后端调整后我们需要在model中加一个prefix字段,同时textView显示内容也要做一次字符串拼接。...对于前端我觉得可以适当引入Data Mapper,将后端数据转换成本地模型,本地模型只与设计图对应,将后端业务与视图完全隔离。...现在比较流行的UI框架Flutter、Compose、Vue其本质都是基于函数式编程实现数据驱动UI,它们共同的目的都是为了解决数据,UI一致性问题。...所以我建议在Kotlin 碰到数据处理尽量使用链式高阶函数(RxJava、Kotlin Flow亦然)。

1.6K00

第14章 使用Kotlin 进行 Android 开发(1)第14章 使用Kotlin 进行 Android 开发(1)

在该版本中提供了许多方便实用的功能代码自动补全和语法高亮显示,另外,Android Studio 内置转换工具可以非常方便地把 Java 代码转换成 Kotlin 代码,如下图所示 ?...hide(Fragment fragment) 显示一个以前被隐藏过的Fragment。Fragment被hide/show,仅仅是隐藏/显示Fragment的视图,不会有任何生命周期方法的调用。...为了创建Fragment,需要继承一个 Fragment 类,并实现 Fragment 的生命周期回调方法, onCreate(), onStart(), onPause(), onStop() 等。...在某些情况下,Fragment并不作为Activity视图展示的一部分,它可能只是用来作为非显示性的功能。...由于平板比手机屏幕大的多,因此平板上可以呈现更多的内容,而 Fragment 可以实现同一视图布局在不同大小的屏幕上显示不同的效果,将 Fragment 加入到 Activity 的 Layout

2.6K30

精选Android中高级面试题:性能优化,JNI,设计模式

可以实现局部刷新,例如:notifyItemChanged (); 缓存区别: RecyclerView 比 ListView 多两级缓存,支持多个离 ItemView 缓存,支持开发者自定义缓存处理逻辑...如何在 JNI 中注册 Native 函数,有几种注册方法 ?...本来主要是作为初始化页面,展示数据的操作,但是因为 XML 视图功能太弱,所以 Activity 既要负责视图显示又要加入控制逻辑,承担的功能过多。...模型层 (Model)针对业务模型,建立数据结构和相关的类,它主要负责网络请求,数据库处理,I/O 的操作。...MVP:通过引入接口 BaseView,让相应的视图组件 Activity,Fragment 去实现 BaseView,实现视图层的独立,通过中间层 Preseter 实现了 Model 和 View

2.6K30

精选Android中高级面试题 (四):性能优化,JNI,设计模式

可以实现局部刷新,例如:notifyItemChanged (); 缓存区别: RecyclerView 比 ListView 多两级缓存,支持多个离 ItemView 缓存,支持开发者自定义缓存处理逻辑...如何在 JNI 中注册 Native 函数,有几种注册方法 ?...本来主要是作为初始化页面,展示数据的操作,但是因为 XML 视图功能太弱,所以 Activity 既要负责视图显示又要加入控制逻辑,承担的功能过多。...模型层 (Model) 针对业务模型,建立数据结构和相关的类,它主要负责网络请求,数据库处理,I/O 的操作。...MVP:通过引入接口 BaseView,让相应的视图组件 Activity,Fragment 去实现 BaseView,实现视图层的独立,通过中间层 Preseter 实现了 Model 和 View

1.1K30

Jetpack Compose Alpha 版现已发布!

进而,我们还了解到 Kotlin 深受开发者的喜爱,如今在排名前一千名的应用,有超过 70% 的应用使用了 Kotlin,60% 的专业 Android 开发者都在使用 Kotlin。...从历史上看,Android 的视图层次结构一直被描述为 UI 组件树。随着 app 状态的变化,需要更新 UI 层次结构来显示当前的数据。...或视图布局添加 Compose 元素。...您可以将基于视图的 UI 元素添加到可组合的函数。这样做可以将不基于 Compose 的组件添加到基于 Compose 的组件,例如: MapView 或 WebView。...或者直接进入 示例应用 并在 "Compose by Example" 浏览这些应用: 观看视频: Compose 示例:https://youtu.be/DDd6IOlH3io 欢迎访问 Compose

4K30

Android Studio 3.2新功能特性

导航编辑器 新的导航编辑器与Android Jetpack的导航组件集成,为创建应用的导航结构提供图形视图。导航编辑器简化了应用内目的地之间导航的设计和实现。...要尝试使用示例数据,请将其添加 RecyclerView 到新布局,单击设计视图下方的设计时属性按钮 ,然后从样本数据模板轮播中选择一个选择。...例如,Silces可以在Google搜索建议显示应用功能和内容。...Lint检查 Lint会检查Java / Kotlin的互操作性 为了确保您的Java代码与Kotlin代码良好的互操作性,新的lint检查会执行Kotlin Interop Guide描述的最佳实践...更多新的lint检查 除了上一节中介绍的Kotlin互操作性lint检查之外,Android Studio 3.2还实现了20个新的lint检查,以帮助您查找和识别常见代码问题。

5.4K10

使用 Material Design 组件实现 Material 动效

本文会介绍上面每种模式,并解释如何将这些模式应用到您的应用。我将会通过在示例应用 Reply (一个简单易用的邮件客户端) 实现对应的效果来说明每个步骤。...使用容器变换,实现视图间的动画切换,可帮助增强它们之间的联系,并维持一个用户的 导航上下文。...有了这些信息,邮箱详情 Fragment 共享元素过渡就可以使用我们提供的 MaterialContinaerTransform 找到并在两个视图之间进行动画切换。...为了介绍这个三维模型,我们可以在邮件列表 (HomeFragment) 和搜索页面 (SearchFragment) 之间使用共享 z 轴过渡。...Material 动效 Codelab: 一个完整的分步的开发者教程,内容涉及如何在 Reply 应用添加 Material 动效。

1.9K20
领券