gpt4 book ai didi

Android 架构组件、android 绑定(bind)和 LiveData

转载 作者:太空狗 更新时间:2023-10-29 13:51:58 26 4
gpt4 key购买 nike

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

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

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

最佳答案

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

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

    在我看来,该解决方案最大限度地减少了 fragment 中的代码量。将进行网络调用和处理结果分开看起来还是不太优雅

关于Android 架构组件、android 绑定(bind)和 LiveData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45577239/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com