AndroidX 库包含架构 组件,您可以 用于设计稳健、可测试且可维护的应用。 数据绑定库与架构无缝协作 用于进一步简化 进行界面开发应用中的布局 可以绑定到架构组件中的数据,这有助于您 管理界面控制器的生命周期,并在数据变化时通知界面。
本页介绍了如何将架构组件整合到您的应用中, 充分利用数据绑定库。
使用 LiveData 将数据变化通知给界面
您可以将 LiveData 对象用作
数据绑定来源,以自动通知界面有关
数据。有关此架构组件的更多信息,请参阅 LiveData
概览。
与实现
Observable,例如
可观察
字段 - LiveData
对象了解订阅数据的观察者的生命周期
更改。掌握这些知识可以带来很多好处,具体详情请参阅
使用
LiveData 实例。
在 Android Studio 3.1 及更高版本中,您可以替换可观察字段
在数据绑定代码中与 LiveData 对象搭配使用。
如需将 LiveData 对象与绑定类一起使用,您需要指定
生命周期所有者来定义 LiveData 对象的作用域。以下
示例将 activity 指定为绑定类之后的生命周期所有者
已实例化:
Kotlin
class ViewModelActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { // Inflate view and obtain an instance of the binding class. val binding: UserBinding = DataBindingUtil.setContentView(this, R.layout.user) // Specify the current activity as the lifecycle owner. binding.setLifecycleOwner(this) } }
Java
class ViewModelActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { // Inflate view and obtain an instance of the binding class. UserBinding binding = DataBindingUtil.setContentView(this, R.layout.user); // Specify the current activity as the lifecycle owner. binding.setLifecycleOwner(this); } }
您可以使用 ViewModel
组件(如下一部分中所述)将数据绑定到布局。在 ViewModel 组件中,
您可以使用 LiveData 对象来转换数据或合并多个数据
来源。以下示例展示了如何在 ViewModel 中转换数据:
Kotlin
class ScheduleViewModel : ViewModel() { val userName: LiveDatainit { val result = Repository.userName userName = Transformations.map(result) { result -> result.value } } }
Java
class ScheduleViewModel extends ViewModel { LiveDatausername; public ScheduleViewModel() { String result = Repository.userName; userName = Transformations.map(result, result -> result.value); } }
使用 ViewModel 管理界面相关数据
数据绑定库可与
ViewModel 组件。ViewModel
公开布局观察并对其更改做出响应的数据。使用
借助数据绑定库的 ViewModel 组件,您可以移动界面逻辑
从布局转移到组件中,这样更易于测试。数据
绑定库可确保视图与数据绑定和解除绑定
来源。剩下的大部分工作包括确保
您公开的数据正确无误。如需详细了解此架构
组件,请参阅 ViewModel
概览。
如需将 ViewModel 组件与数据绑定库搭配使用,您必须:
实例化您的组件,该组件继承自
ViewModel 类,则获取
绑定类的一个实例,并将 ViewModel 组件分配给
属性。以下示例展示了如何使用
组件: