Android 架构组件,android 绑定和 LiveData

Android Architecture Components, android binding and LiveData

我想知道 android 绑定在概念层面上是否与实时数据兼容。 有一个简单的任务:单击按钮后调用服务器。 所以在我看来我有

android:onClick="@{viewmodel::onOrderButtonClick}"

ViewModel 中定义了正确的 onOrderButtonClick(View) 方法。 但是为了通过 LiveData 进行服务器调用,我需要我的 Fragment 引用(observe() 方法需要 LifecycleOwner 实例作为第一个参数)。 当然,我不能在我的 ViewModel 中保留对片段的引用。 这里的模式是什么?我真的需要在片段 class 中实现所有事件方法并将它们委托回视图模型 class 吗?

经过一番挖掘,有一个坏消息和一个好消息。 坏消息是无论如何都必须使用该片段(每个 livedata 事件的片段中总是有一些代码) 好的是可以做的比较干净:

  1. 从片段调用 getOrderObservable() 到视图模型。它 returns MutableLiveData<> 在视图模型的构造函数中创建。
  2. 然后在视图模型的 onOrderButtonClick() 中对该可观察对象调用 observe()
  3. 在视图模型的 onOrderButtonClick() 中调用 setValue()

    我认为该解决方案最大限度地减少了片段中的代码量。将进行网络调用和处理结果分开看起来仍然不是那么优雅