android - 数据绑定时导入和变量之间的区别?
问题描述
在查看有关和之间差异的数据绑定文档后,尚不清楚它们有何不同。以下是取自文档页面的示例。<import/>
<variable/>
<import type="com.example.real.estate.View" alias="Vista"/>
看起来相当于
<variable name="user" type="com.example.User"/>
除了 analias
可以以大写字母开头,而name
不能。它们甚至被类似地使用。
<data>
<import type="com.example.MyStringUtils"/>
<variable name="user" type="com.example.User"/>
</data>
…
<TextView
android:text="@{MyStringUtils.capitalize(user.lastName)}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
从示例中我看到的唯一区别是您可以调用 animport
的方法,但不能调用variable
's。
解决方案
variable
如果您想将一些数据传递给视图,您可以使用。在您的示例中,您有 User 类型的用户变量,您可以使用它来设置用户名TextView
。您可以调用变量方法 -user.lastName
相当于user.getLastName()
只需import
指定要使用的类,就不会传递任何数据。在您的示例中,导入的实用程序类仅用于大写用户名,该capitalize
方法将其作为参数接收。
推荐阅读
- vuejs2 - 用作表单转发器时,VueJS 选择字段未正确呈现
- xamarin.forms - 使用 Xamarin Forms 在 VS for Mac 上使用 OnIdiom 的问题
- typescript - 具有动态返回类型的泛型函数
- time-series - 卷积 AE 总是过拟合时间序列——怎么了?
- macos - macOS 上 SwiftUI 中 List 中的 TextField:编辑效果不佳
- ionic-framework - 未显示播放和暂停按钮。离子角度项目
- mysql - 在 GORM 上检索记录时使用默认 MySQL 函数
- java - 在将应用程序部署到 Wildfly 8 时,我收到 NoClassDefFoundError,但它成功启动、工作并使用给定的类
- azure-active-directory - 添加 Azure AD 连接服务会覆盖 AAD 门户中的重定向 URI
- angular - 无法从可观察对象更改对象的字段(设置新值)