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

使用视图绑定替代 findViewById

→ ActivityAwesomeBinding.java) 布局文件中每一个带有 id 的视图都会在绑定对象中有一个对应的属性,这个属性将拥有正确的类型,并且空安全 视图绑定完美支持 Java...如果您正在使用 Kotlin,视图绑定的生成类也已经对互操作进行了优化。通过 @Nullable 和 @NonNull 注解的使用,Kolin 可以正确的将属性暴露为空安全类型。...在 ActivityAwesomeBinding.java 中,视图绑定生成了一个只有一个参数的 inflate 方法,该方法通过将 parent 设定为空值来指定当前视图不会绑定到父视图中;视图绑定也暴露了一个有三个参数的...视图绑定对比 Kotlin 合成方法与 ButterKnife 关于视图绑定,一个最常见的问题是: "我是否应该用视图绑定替代 Kotlin 合成方法或 ButterKnife ?...△ 视图绑定空安全、只引用当前布局中的视图、支持 Java 和 Kotlin,同时也更简洁 上图为对比视图绑定、ButterKnife 和 Kotlin 合成方法的功能。

1.6K30

C# WPF MVVM开发框架Caliburn.Micro Screens, Conductors 和 Composition⑦

如果您正在从屏幕过渡,它会确保屏幕被停用。还有另一个场景也很重要。假设您有一个包含未保存数据的屏幕,并且有人试图关闭该屏幕甚至应用程序。...IViewAware–由需要了解其绑定到的视图的类实现。它有一个AttachView方法,框架在将视图绑定到实例时调用该方法。它有一个GetView方法,框架在为实例创建视图之前调用该方法。...OnDeactivate–覆盖此方法以添加自定义逻辑,该逻辑应在屏幕停用或关闭时执行。bool属性将指示停用是否实际结束。停用完成后,IsActive将为false。...此属性使CM的ViewLocator为视图模型查找适当的视图,并使CM的ViewModelBinder将两者绑定在一起。完成后,我们将视图弹出到ContentControl的Content属性中。...请注意,我们正在将View.Context附加属性绑定到CustomerWorkspaceViewModel的State属性。这允许我们根据该属性的值动态更改视图。

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

    Kotlin Android Extensions 的未来计划

    进行 Android 开发带来了两项新的便利功能: Synthetic 视图 : 您可以将调用 findViewById 替换为使用 kotlinx.android.synthetic 进行 UI 交互...我们随后发布了 适用于 Android 的视图绑定 组件,它是一个与 Android 构建工具链深度集成并提供与 Kotlin synthetic 类似功能的官方支持库。...在接下来的一年里,我们的团队将共同弃用 synthetics,并继续支持我们建议的选项——"视图绑定 (View Binding)"。...这意味着: 如果您正在使用 Parcelize,则可以继续使用相同的注解和 API。...如果您使用 Android Kotlin synthetics,建议尽快迁移到 "视图绑定 (View Binding)"。请参阅我们的 迁移指南 以了解更多详细信息。

    85730

    Android使用ViewBinding

    ViewBinding和Kotlin扩展 ViewBinding 和 Kotlin 扩展 都是 Android 开发中常用的技术,用于简化视图查找和绑定的过程。...ViewBinding 使用了编译时生成的绑定类,在 xml 布局文件中的每个视图都会生成一个对应的绑定类对象,因此在编译时检测到视图名称的错误。...ViewBinding 可以生成类型安全的代码,避免了手动查找和强制转换视图对象的麻烦。 ViewBinding 不会增加 APK 大小,因为它只是编译时生成的代码。...Kotlin扩展 使用起来相对简单,可以直接在布局文件中使用 Kotlin 扩展函数来查找和操作视图。...如果想在生成绑定类时忽略某个布局文件,将tools:viewBindingIgnore=”true”`属性添加到相应布局文件的根视图中。

    74221

    C# WPF MVVM开发框架Caliburn.Micro入门介绍①

    参数可以数据绑定到其他框架元素,也可以传递特殊值,例如DataContext或EventArgs。所有参数都会自动转换为方法的签名。...此外,我们将检查方法的签名并正确构造ActionMessage参数。可以关闭或自定义此机制。您甚至可以更改或添加不同控件的约定。...Binding 约定 我们还支持基于约定的数据绑定。这也适用于x:Name。如果ViewModel上的属性与元素同名,我们将尝试对其进行数据绑定。...Screens 和Conductors Screen、ScreenConductor和ScreenCollection模式支持基于模型的活动或当前项目跟踪,强制执行屏幕生命周期,并在应用程序中优雅地关闭或取消关闭...View 定位器 对于应用程序中的每个ViewModel,Caliburn.Micro都有一个基本策略来定位应该渲染它的视图。我们是根据命名约定来做这件事的。

    1.8K20

    为什么说Flutter让移动开发变得更好?

    很快,我开始理解Flutter背后的设计思想,并决定自己尝试一下,看看能否将Flutter投入使用。 一开始我在想用什么项目来练手,考虑后决定移植我的第一款Android应用到Flutter。...前面太容易了,我决定扩展应用程序,合并电视节目。几个小时后也顺利完成了。该应用程序包含了电影和电视节目,并且开发过程中没有遇到任何困难。...但让我告诉你一点:在使用Flutter之后,你将开始理解目前Android开发存在的问题,并且很明显Flutter的设计更适合现代的,响应式的应用程序。...Flutter使用Databinding相同的思想,即将视图/小部件绑定到变量,而无需在Java / Kotlin中手动管理数据绑定,不用专门的绑定文件来桥接XML和Java。...我们为什么要用XML来描述菜单项,这无法将任何业务逻辑绑定到XML(这是菜单的全部目的),然后在Activity / Fragment的回调中进行过设置,然后再绑定真实回调到另一个回调上?

    2K10

    Android Studio 3.2新功能特性

    AndroidX重构 作为Jetpack的一部分,我们正在使用androidx命名空间将Android支持库重构为新的Android扩展库。有关更多信息,请阅读 AndroidX公告。...android.enableJetifier:设置true为该标志时,表示您希望获得工具支持(通过Android Gradle插件)自动将现有的第三方库转换为与AndroidX相同的库。...通过从主菜单中选择Run > Profile来部署应用程序后,通过单击+并从下拉菜单中选择一个应用程序进程来启动一个新的会话 。...线程活动时间线仅指示每个线程可用的跟踪数据的位置,而不是实际的线程状态(如正在运行,正在等待或正在休眠)。...将应用程序部署到设备后,配置程序会在应用程序调用时自动开始记录CPU活动 startMethodTracing(String tracePath),并且配置程序在您的应用程序调用时停止记录 stopMethodTracing

    5.5K10

    Kotlin Maps:五个基本函数

    在 Kotlin 中有第二个接口?MutableMap,它提供写操作。每当您需要修改maps内容时,请使用此方法。完成后,最好将其转换为不可变映射以防止进一步修改。...Kotlin 鼓励?空安全。这就是为什么返回类型被清楚地标记为可空类型的原因。它强制您处理该值可能为空的事实以防止运行时异常。 空安全强制您处理值可能为空的事实以防止运行时异常。...好吧,它看起来不像,但我们正在调用*get*方法。我们正在使用 Kotlin 的内置?运算符重载,它会自动将类似数组的访问转换为使用get方法。当您阅读它时,它使语法更轻巧且更易于处理。它看起来像?...Put**的方法有两个目的: 它向映射中插入一个新键,并为其绑定一个提供的值。 它将与现有键关联的值替换为新的值。 我们对两者使用相同的方法。该方法接收一个键和一个值。...从某种意义上说,您使用迭代器将maps转换为列表。

    2.4K10

    《Spring Boot 实战开发》 附录 II : Spring Boot 2.0 新特性《Spring Boot 实战开发》 附录 II : Spring Boot 2.0 新特性Kotlin

    如果使用 spring.datasource.type 强制在 Tomcat-based 应用程序中使用Hikari, 现在可以删掉了。...往后核心Spring框架API 将保持稳定。 JSON-B 支持 除了Jackson和Gson之外,我们现在还支持JSON绑定的JSON-B。...如果您正在Kotlin项目中使用Jackson,那么您现在必须手动添加 com.fasterxml.jackson.module:jackson-module-kotlin 这个依赖。...条件注解 Bean增量记录 当使用devtools的应用程序由于更改而重新启动时,将记录一个条件评估报告的增量。这个delta定义了哪些条件已经更改,以及对应用程序的影响。...如果没找到静态index.html文件,它会去视图模板下面找index 模板。只要找到了一个就会自动被用作应用程序的欢迎页面。

    3.3K30

    C# WPF MVVM开发框架Caliburn.Micro 关于Conventions⑧

    获得名称后,我们将搜索具有该名称的类型。我们将通过AssemblySource.Instance搜索您向CM公开的任何程序集。...此属性获取您的ViewModel,使用ViewLocator定位视图,然后将它们一起传递到ViewModelBinder。绑定完成后,视图被注入到定义属性的元素中。...设置Message.Attach属性后,解析器立即启动,将字符串消息转换为某种类型的TriggerBase,其中包含关联的ActionMessage。...在所有其他情况下,ContentControl将绑定到Content属性。通过在没有ContentTemplate的情况下选择View.Model属性,我们可以实现丰富的合成。...ApplyBinding–如上所述,当发生常规数据绑定时,我们正在绑定的元素将查找其ElementConvention,并调用其ApplyBinding func。

    2.8K20

    Kotlin 1.2 的新增特性

    如果调用一个返回类型参数 T 并将返回值转换为特定类型 Foo 的泛型方法,则编译器现在可以理解此调用的 T 需要绑定到 Foo 类型。...如果满足条件,Closeable.use 可以调用 Throwable.addSuppressed 在一些其他异常处理后,关闭资源期间抛出异常时,Closeable.use 函数可调用 Throwable.addSuppressed...这可能会影响应用程序的整体性能;仅在多个类之间共享一些复杂的状态并在类初始化时更新时才使用它。 “手工”的解决方法是将控制流的子表达式的值存储在变量中,而不是直接在调用参数中对它们进行求值。...Kotlin 1.2 在调用点强制执行此检查,如果接收方为空,则抛出异常。 要切换到旧行为,请将 fallback 标志 -Xno-receiver-assertions 传递给编译器。...JavaScript 后端 默认启用对类型化数组(TypedArrays)的支持 JS typed arrays 支持将 Kotlin 基本数组(如 IntArray, DoubleArray)转换为JavaScript

    2.8K70

    Linux系统关闭或重新启动主机的命令详解

    即使现在Linux系统基本都是相对稳定,但有时候驱动程序和应用程序也可能存在一些小问题,这时就需要重新启动Linux系统主机,今天美联科技就来讲解下,关闭或重新启动Linux系统的几个实用命令。...可以使用不同的延迟,例如,可以使用+9代替,这将告诉主机在9分钟内运行关机程序。...另一种选择是强制重启。如果应用程序或服务正在挂起,而需要快速重启,-f命令将非常有用:reboot –f,这将强制重新启动主机。...3、定时关机 除了使用-f命令强制关机外,还可以使用-w开关将系统重启调用记录到/var/log/wtmp。这是一个潜在有用的调试工具,就像-verbose一样,它可以帮助解决关机问题。...terminate - 将终止信号SIGTERM发送到所有进程,以便正常终止。 kill - 如上所述,但SIGKILL信号强制立即终止进程。 Sync - 将数据刷新到磁盘。

    17110

    【Jetpack】ViewModel + LiveData + DataBinding 综合使用 ( 核心要点说明 | 组合方式 | 代码示例 )

    架构组件后 , 视图 View 与 数据模型 Model 之间实现了解耦 , 同时也能 保证二者之间的双向数据交互 , 减少了 Activity 代码量 , 增加了应用程序的可维护性 ; ViewModel...ViewModel 初始数据 设置给 视图组件 , 进行 初始状态显示 ; 如果 在运行过程中 , ViewModel 中的数据发生了变化 , 如何将变化应用到视图组件中 , 在视图中显示最新的数据内容...下面两个元素 : 数据模型 Model / 视图模型 ViewModel 视图 View DataBinding 中除了绑定 数据模型 Model 之外 , 还可以直接绑定 视图模型 ViewModel...普通布局文件 转换为 DataBinding 布局文件 , 将光标放在布局左上角 , 按下 " Alt + 回车 " 组合键 , 选择 " Convert to data binding layout...普通布局文件 转换为 DataBinding 布局文件 , 将光标放在布局左上角 , 按下 " Alt + 回车 " 组合键 , 选择 " Convert to data binding layout

    1.6K20

    Kotlin 1.2 的新增了哪些特性?

    如果调用一个返回类型参数 T 并将返回值转换为特定类型 Foo 的泛型方法,则编译器现在可以理解此调用的 T 需要绑定到 Foo 类型。...如果满足条件,Closeable.use 可以调用 Throwable.addSuppressed 在一些其他异常处理后,关闭资源期间抛出异常时,Closeable.use 函数可调用 Throwable.addSuppressed...这可能会影响应用程序的整体性能;仅在多个类之间共享一些复杂的状态并在类初始化时更新时才使用它。 “手工”的解决方法是将控制流的子表达式的值存储在变量中,而不是直接在调用参数中对它们进行求值。...Kotlin 1.2 在调用点强制执行此检查,如果接收方为空,则抛出异常。 要切换到旧行为,请将 fallback 标志 -Xno-receiver-assertions 传递给编译器。...JavaScript 后端 默认启用对类型化数组(TypedArrays)的支持 JS typed arrays 支持将 Kotlin 基本数组(如 IntArray, DoubleArray)转换为

    2.8K10

    Kotlin入门(20)几种常见的对话框

    尝试将以上Java代码转换为Kotlin代码,则改写后的Kotlin代码如下所示:     val builder = AlertDialog.Builder(this)     builder.setTitle...说时迟那时快,在Android Studio上面把Spinner上述的Java代码转换为Kotlin,不一会儿就生成了如下的Kotlin代码:         private fun initSpinner...这时就用到了进度对话框,在加载开始前弹出进度框,加载结束后关闭进度框,从而改善了加载交互的用户体验。 进度对话框分两种,一种是水平进度对话框,另一种是圆圈进度对话框,下面分别进行介绍。...倘若使用Kotlin书写,则借助于Anko库只需下面两行代码:     val dialog = progressDialog("正在努力加载页面", "请稍候")     dialog.show()...() 注意到上面的Kotlin函数采取了前缀indeterminate,该单词意思是“模糊的、不定的”,表示这种对话框的处理进度是不确定的,不像水平进度对话框可以明确指定当前进度,据此开发者能够将progressDialog

    2.8K30

    Kotlin入门(20)几种常见的对话框

    尝试将以上Java代码转换为Kotlin代码,则改写后的Kotlin代码如下所示: val builder = AlertDialog.Builder(this) builder.setTitle...说时迟那时快,在Android Studio上面把Spinner上述的Java代码转换为Kotlin,不一会儿就生成了如下的Kotlin代码: private fun initSpinner...这时就用到了进度对话框,在加载开始前弹出进度框,加载结束后关闭进度框,从而改善了加载交互的用户体验。 进度对话框分两种,一种是水平进度对话框,另一种是圆圈进度对话框,下面分别进行介绍。...倘若使用Kotlin书写,则借助于Anko库只需下面两行代码: val dialog = progressDialog("正在努力加载页面", "请稍候") dialog.show()...() 注意到上面的Kotlin函数采取了前缀indeterminate,该单词意思是“模糊的、不定的”,表示这种对话框的处理进度是不确定的,不像水平进度对话框可以明确指定当前进度,据此开发者能够将progressDialog

    1.6K10

    Android Studio 4.0 重磅发布!Android 11 Bata 版来了!

    对于正在使用 ConstraintLayout 的开发人员来说,这个 IDE 可以轻松将其转换为 MotionLayout。...或者想通过嵌套视图的实时 3D 表示,更轻松地检查视图层次?借助新的 Layout Inspector,你可以获得正在运行的应用中的最新数据,并获得关于资源解析的深度信息,从而更直观地调试 UI。...部署到运行 API 29 或更高版本的设备还能获得其他特性,例如动态布局层次结构(随视图更改而更新)、详细的视图属性(还可以帮助你确定资源值是如何解析的)以及正在运行的应用 UI 的 3D 模型。...Kotlin Android 实时模板 实时模板(Live Templates)是 IntelliJ 的一项便捷功能,允许你输入简单的关键字将常见的构造插入代码中。...://d.android.com/studio/releases#4-0-0-feature-plugin 启用或禁用构建功能的新选项 Android Gradle 插件具有对很多现代库(例如数据绑定和视图绑定

    2.6K20
    领券