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

ViewBinding 与 Kotlin 委托双剑合璧

多个维度对比它们的区别: 角度 findViewById ButterKnife Kotlin Synthetics DataBinding ViewBinding ❓ 简洁性 ✖ ✖ ✔ ✔ ✔...ViewBinding 与 Kotlin 委托双剑合璧 这里,ViewBinding 的使用教程已经说完了。但是回过头看,有没有发现一些局限性呢?...利用了 Kotlin 内敛函数 + 实化类型参数,编译后函数体整体被复制调用处,V::class.java 其实是 FragmentTestBinding::class.java。...Kotlin 高阶函数,可以把 lambda 表达式直接作为参数传递,其中 View 是函数参数,而 T 是函数返回值。lambda 表达式本质上是 「可以作为值传递的代码块」。...显然并不是,我们还有其他一些场景: Activity Fragment DialogFragment ViewGroup RecyclerView.ViewHolder 所以,我们有必要将委托工具适当封装得更通用些

1.6K20

Now in Android #15 —— 最新 Android 知识分享

向 AndroidX 迁移 Nick Anthony 发布了一篇关于如何 Support 库迁移到 AndroidX 的文章,地址如下: https://medium.com/androiddevelopers...v=j8xeUqKylBE&list=PLNUr_cTShrWZNKJlnurh5MB1wkSEU2nlw&index=5&t=0s Kotlin 首先是关于 协程 的一个视频 Kotlin Coroutines...v=wAQCs8-a6mg&feature=youtu.be 对于内联函数,编译器会把函数代码直接复制函数调用处,以此来消除当参数类型是 lambda 时带来的额外的内存消耗。...大家肯定都了解了如何在 ViewModel/LiveData/Lifecycle 中正确的使用协程,使得在恰当的情况下可以取消协程,比如用户离开当前页面。...最新的 recyclerview-1.2.0 中发布了 MergeAdapter ,你可以将多个 Adapter 合并为一个。

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

Android:Jetpack之视图绑定——ViewBinding

历经13年的打磨和沉淀,Android体系与社区生态已非常成熟,开发者最初的框架少、没规范、代码都得自己写,轮子、框架满天飞。...Android Jetpack 向后兼容,是为现代设计实践而设计的,关注点分离、测试能力、松散耦合、观察者模式、控制翻转、Kotlin集成等生产力特性。...Data Binding→数据绑定,可使用声明式将布局中的界面组件绑定应用中的数据源; Lifecycles→生命周期感知,可感知和响应Activity和Fragment的生命周期状态的变化; LiveData...被杀、或设备重启,只要TaskRecord还存在最近访问列表中,都会执行; Foundation → 基础 提供横向功能,:向后兼容、测试、安全、Kotlin语言支持; AppCompat→ 帮助较低版本的...2.手写findViewById ViewBinding 从早期对照XML手写findViewById,在线工具自动生成: [07b5ac996d054bd96e7533426d9003b2.png

1.2K30

Android:Jetpack之视图绑定——ViewBinding

历经13年的打磨和沉淀,Android体系与社区生态已非常成熟,开发者最初的框架少、没规范、代码都得自己写,轮子、框架满天飞。...Android Jetpack 向后兼容,是为现代设计实践而设计的,关注点分离、测试能力、松散耦合、观察者模式、控制翻转、Kotlin集成等生产力特性。...Data Binding→数据绑定,可使用声明式将布局中的界面组件绑定应用中的数据源; Lifecycles→生命周期感知,可感知和响应Activity和Fragment的生命周期状态的变化; LiveData...被杀、或设备重启,只要TaskRecord还存在最近访问列表中,都会执行; Foundation → 基础 提供横向功能,:向后兼容、测试、安全、Kotlin语言支持; AppCompat→ 帮助较低版本的...2.手写findViewById ViewBinding 从早期对照XML手写findViewById,在线工具自动生成: [07b5ac996d054bd96e7533426d9003b2.png

1K30

Android开发中的Kotlin扩展函数技巧!

Kotlin中,扩展函数是一种非常有用的功能,可以让我们向现有的类添加新的功能,而无需修改类的源代码。在本文中,我们将探讨Kotlin扩展函数的原理和运用,以及如何在Android开发中使用它们。...当我们使用扩展函数调用一个类的方法时,编译器会将这个函数转换为一个静态方法,并将这个类的实例作为第一个参数传递进去。...的使用 在Android开发中,我们经常需要使用RecyclerView来显示列表数据。...例如,我们可以像下面这样定义一个扩展函数,用于在RecyclerView中添加和移除数据: fun RecyclerView.addItems(items: List, adapter:...(items) adapter.notifyDataSetChanged() } 在上面的代码中,我们定义了两个扩展函数,一个用于向RecyclerView中添加数据,一个用于移除RecyclerView

25320

Kotlin精通Android开发》资源下载和内容勘误

资源下载 下面是《Android Studio开发实战 零基础App上线》一书用到的工具和代码资源: 1、本书使用的Android Studio版本为3.0.1,Kotlin版本为1.2.0...勘误记录 下面对书中的笔误之处进行更正说明: 1、第6页的“1.2.3  创建Kotlin工程” 第二段里面的“不过因为通知的新特性API16开始才支持”改为“不过因为通知推送的新特性API16...开始才支持”,也就是把“通知”改为“通知推送”。...13、第171页的“7.2.3  应用栏布局AppBarLayout” 第一段第二行末尾“RecyclerView是身怀的绝技之一”改为“RecyclerView是身怀绝技的其中一个控件”。...20、第291页的“10.1.1  大线程Thread与消息传递” 该小节的标题“10.1.1  大线程Thread与消息传递”改为“10.1.1  线程Thread与消息传递”,也就是去掉标题里面的“

1.4K20

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

不过,好在ViewBinding并不复杂,kotlin-android-extensions插件切换到ViewBinding也是比较容易的,那么本篇文章就作为《第一行代码 第3版》的另外一篇DLC,向大家介绍一下...当然这个我认为并不是主要原因,因为现在Google开发的各种新技术都在全面兼容Kotlin,而不再怎么去考虑Java了,协程、Jetpack Compose等。 那么主要原因是什么呢?...这样当下次再获取相同控件实例的话,就可以直接HashMap缓存中获取了。 这就是kotlin-android-extensions插件的实现原理,其实还是非常简单的。...还有,虽然HashMap是一种O(1)时间复杂度的数据结构,但这毕竟只是理论上的时间复杂度,实际调用肯定是没有直接访问控件实例快的,因此kotlin-android-extensions插件也在无形当中降低了程序的运行效率...讲完了kotlin-android-extensions插件的“坑”,接下来我们还是看一下如何在Adapter中使用ViewBinding,别忘了我们的目标始终是不写findViewById。

2.7K31

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

95% 降低到 Java 85%, 而 Kotlin 5% 涨到 15% ,如下图所示 ?...在该版本中提供了许多方便实用的功能代码自动补全和语法高亮显示,另外,Android Studio 内置转换工具可以非常方便地把 Java 代码转换成 Kotlin 代码,如下图所示 ?...当Fragment被detach后,执行attach操作,会让FragmentonCreateView开始执行,一直执行onResume。attach无法像add一样单独使用,单独使用会抛异常。...当执行一个 Fragment 事务时,也可以将该 Fragment 加入一个由宿主 Activity 管辖的后退栈中,并由 Activity 记录加入后退栈的 Fragment 信息,按下后退键可以将...Fragment 后退栈中一次弹出。

2.6K30

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

所以ViewHolder便应运而生,它在列表项首次初始化时,就将其视图对象保存起来,后面再次加载该视图时,即可直接持有者处获得先前的视图对象,从而减少了系统开销,提高了系统的运行效率。...下面便是个循环视图的网格适配器,它实现了类似淘宝主页的网格频道栏目,具体的Kotlin代码如下所示: //把公共属性和公共方法剥离基类RecyclerBaseAdapter, //此处仅需实现getItemCount...注意适配器代码仍然通过findViewById方法获得控件对象,可是号称在Anko库的支持之下,Kotlin早就无需该方法就能直接访问控件对象了呀,为啥这里依旧靠老牛拉破车呢?...; 2、列表项信息的数据结构名称,RecyclerInfo; 3、对各种控件对象的设置操作,ItemHolder类的bind方法; 除了以上三个要素,RecyclerStaggeredAdapter...对于第一个的布局编码,可以考虑将其作为一个整型的输入参数;对于第二个的数据结构,可以考虑定义一个模板类,在外部调用时再指定具体的数据类;对于第三个的bind方法,若是Java编码早已束手无策,现用Kotlin

1.8K41

前方高能!这是最新的一波Android大厂面试题汇总,不学则已,一学惊人

启动一个 Theme 为 Dialog 的 Activity,弹出Dialog时Activity的生命周期 onStart 和 onResumeonPause 和 onStop 的区别 Activity之间传递数据的方式...Intent是否有大小限制,如果传递数据量偏大,有哪些方案 Activity的onNewIntent()方法什么时候会执行 显示启动和隐式启动 scheme使用场景,协议格式,如何使用 ANR 的四种场景...onCreate和onRestoreInstance方法中恢复数据时的区别 activty间传递数据的方式 跨App启动Activity的方式,注意事项 Activity任务栈是什么 有哪些Activity...分组原理是什么 Dialog的Context只能是Activity的Context,不能是Application的Context App应用程序如何与SurfaceFlinger通信的,View 的绘制是如何把数据传递给...Android优秀三方库源码 2.Jetpack架构组件入门精通 Android Jetpack - Navigation Android Jetpack - Data Binding Android

1.1K20

Android Jetpack系列 之分页库Paging3(一)

协程 看这一篇就够了 Kotlin Flow 看这一篇 带你入门~ 项目示例 在官方文档中也给出了我们Paging在架构中的使用图 ?...通过上图我们也可以清晰的看出来,Paging在仓库层、ViewModel和UI层都有具体的表现,接下来我们通过一个示例来逐步讲解Paging是如何在项目架构中工作的。...,这里的意思就是 我们传Int类型的值(页码)得到返回的数据信息DemoReqData对象。...这里需要提醒的是如果你使用的不是Kotlin 协程而是Java,则需要继承对应的PagingSourceRxPagingSource或ListenableFuturePagingSource。...View层数据请求并将结果显示在View上 这里,基本工作已经差不多了,当然我们说的差不多了只是快能看到成果了,其中需要讲解的地方还有很多,最后一步我们在view中请求数据,并将结果绑定在adapter

4K30

壹二APP开发实践回顾总结出40条精要

Gson 可以直接设置使用序列化的注解,这样就可以直接混淆model了,另外 model 不写get 或者 set 的方法也挺好,即减少了方法数量,调用的时候也相对方便,当然判空还是必须的,毕竟这不是 Kotlin...链接 29、 RecyclerView 更新数据如果有动画的话,那么应该先清除所有的数据,再添加新的数据,不然动画效果和以前的列表会同时出现,特别诡异。...33、关于系统权限弹框,联想手机上面会影响宿主 Activity 的状态,会回调 onSaveInstanceState() 的方法,如果在这之后需要弹出DialogFragment或者 执行FragmentTransaction...、绑定 holder,数据无法做到复用。...最优方案是考虑给这种类型每个 holder 都设置不同的 type,保证唯一性,这样就可以实现创建一次,holder 不被复用,数据可复用。

86640

使用导航组件: 对话框目的地 | MAD Skills

在 main 包中创建一个新的 Kotlin 文件并命名为 MyDialog.kt。...创建一个新的 FirstFragment 导航对话框的操作 我们还需要额外的一步才可能导航这个对话框。...如果我们查看 DonutList 的代码,该 fragment 包含了那个展示列表数据RecyclerView,我们可以发现导航是如何被处理的。...其次,我们 FAB 导航时 (不需要传递参数给 Directions 对象) 调用 navigate() 方法和甜甜圈列表中任一列表项导航时 (需要传递 donut.id) 不太一样。...您所见,我已经预先在应用中输入了一些重要的甜甜圈数据: ? DonutTracker 应用展示着一个诱人的甜甜圈列表 点击 FAB,我们可以看到一个待输入新甜甜圈信息的对话框: ?

1.4K30

Android Paging库使用详解(小结)

Android分页包能够更轻易地在RecyclerView里面缓慢且优雅地加载数据. 许多应用数据源消耗数据, 数据源里面有大量的数据, 但是一次却只展示一小部分....分页包支持多样的应用架构, 包括脱机数据库和与后台服务器通讯的数据库. UI PagedList类通过PagedListAdapter加载数据RecyclerView里面....更新已有应用 如果应用已经网络或者数据库消费数据, 很大可能可以直接升级分页库提供的功能....你也可以使用Java中的Object.equals()方法或者Kotlin中的==操作符. 但是要确保要么实现了对象中的equals()方法或者使用了kotlin中的数据对象....如果你想要对分布包数据库加载中设置更多的控件, 要像下面的代码一样, 传递自定义的Executor对象给LivePagedListBuilder: EventViewModel.kt: val myPagingConfig

2K30

当大潮退去没有谁还能Android这行“裸泳”,10家大厂面试题,掌握这些让你轻松面试

9.kotlin ?的原理 10.在项目中有直接使用tcp,socket来发送消息吗 11.如何在网络框架里直接避免内存泄漏,不需要在presenter中释放订阅 12.生命周期都是通过什么调用的?...利用什么传递数据 10.Jvm的内存结构,Jvm的垃圾回收,方法区有什么东西?...kotlin的泛型了解吗?泛型的pecs原则 7.同步屏障 8.性能优化做过什么工作? 9.RecyclerView的缓存结构是怎样的?缓存的是什么?...,事件怎么传递 12.Launcher启动图标,有几个进程?...Android优秀三方库源码 2.Jetpack架构组件入门精通 Android Jetpack - Navigation Android Jetpack - Data Binding Android

97720

Android开发3年,九月份面试12家大厂跳槽成功,我有一些面试经验想分享给你们

kotlin ?的原理 在项目中有直接使用tcp,socket来发送消息吗 如何在网络框架里直接避免内存泄漏,不需要在presenter中释放订阅 生命周期都是通过什么调用的?有用过AIDL吗?...Seriazable与Parceable的区别 Bundle是什么数据结构?利用什么传递数据 Jvm的内存结构,Jvm的垃圾回收,方法区有什么东西?...kotlin的泛型了解吗?泛型的pecs原则 同步屏障 性能优化做过什么工作? RecyclerView的缓存结构是怎样的?缓存的是什么?cachedView会执行onBindView吗?...RecyclerView嵌套RecyclerView,NestScrollView嵌套ScrollView滑动冲突 ViewGroup在Action_Move时onIntercept返回true,事件怎么传递...最后我在这里分享一下这段时间朋友,大佬那里收集的一些2019-2020BAT 面试真题解析,里面内容很多也很系统,包含了很多内容:Android 基础、Java 基础、Android 源码相关分析、

1.4K10
领券