Android架构组件,Android绑定和LiveData

时间:2017-08-08 20:09:17

标签: android android-architecture-components android-livedata

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

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

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

1 个答案:

答案 0 :(得分:1)

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

  1. 从片段到视图模型调用getOrderObservable()。它回来了 MutableLiveData<>在视图模型中创建的ctor。
  2. 然后在该可观察视图中调用observe()onOrderButtonClick()
  3. 在视图模型中的onOrderButtonClick()中只需调用setValue()

    在我看来,该解决方案最小化了片段中的代码量。分开进行网络调用和处理结果仍然看起来不那么优雅