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

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

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

最佳答案

经过一番挖掘,有一个坏消息和一个好消息。
坏消息是无论如何都必须使用片段(对于每个livedata事件,片段中总是有一些代码)
好的一点是它可以做得相对干净:
从片段调用getOrderObservable()以查看模型。它返回
在视图模型的ctor中创建的mutablelivedata。
然后在视图模型的onOrderButtonClick()中调用observate()
在视图模型中的onOrderButtonClick()中,只需调用setValue()
在我看来,这个解决方案可以最小化片段中的代码量。尽管如此,将进行网络调用和处理结果分开看起来还是不够优雅

10-07 20:45