4

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

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

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

4

1 回答 1

1

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

  1. 从片段调用 getOrderObservable() 到视图模型。它返回在视图模型的 ctor 中创建的 MutableLiveData<>。
  2. 然后在视图模型的 onOrderButtonClick() 上调用 observable()
  3. 在视图模型的 onOrderButtonClick() 中,只需调用 setValue()

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

于 2017-08-11T11:56:23.140 回答