问题标签 [mediatorlivedata]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Android mediator live data 将 2 个 live data 合并为一个 stream 和一个 trigger
我有 2 个实时数据,我将它们作为源添加到中介实时数据中,我从视图模型中公开它以供片段观察。
当任何一个实时数据发生变化时,它都会触发中介实时数据的 onChanged 方法,这意味着我的观察者被触发了两次,我想要将两者结合起来并观察一个只触发一次的流,有什么我在丢失还是我需要为此推出自己的方法?目前我这样做,这会触发两次
为简洁起见删除了一些代码
有什么帮助吗?
android - 如何使用 Room 和 LiveData Android 填充多个对象数据库
在云数据库(firebase 或 Retrofit 无关紧要。),我有多个对象,如餐厅、菜单、食物、用户等。第一次启动App 时,我需要一个接一个地获取它们并填充数据库。我可以一个人拿来其中的任何一个。我看到 Mediatorlivedata,List>> 有两个对象,但它似乎不实用。将有许多数据要插入和许多绑定到的任务。适合这里的最佳做法是什么?你的建议是什么?
示例对象
远程存储库
本地的插入方法是无效的。
android - Android 观察多个 MutableLiveData
我有一个 MVVM 设置,两个片段通过 ViewModel 交互。我SourceFragment
正在更新MutableLiveData
VM 中的两个 LatLng。我的第二个是MapFragment
用两个 LatLng LiveData 绘制路线。两个片段在 Activity 启动时被加载。SourceFragment 更新 LatLngs。在请求绘制路线之前,我需要等待地图加载,并且在MutableLiveData
加载地图后我会更新第三个布尔值。目前我实现这一点的方法是通过一组 if 语句为MutableLiveData
我的三个设置三个单独的 viewModel Observers来检查所有三个设置的时间。我有一种感觉,这可以用类似的方法做得更好,但我还没有找到一个我可以解决的例子。是MapFragment
MutableLiveData
MediatorLiveData
MediatorLiveData
或其他适用于此的东西?
我的源代码片段
我的地图片段
我的视图模型
java - 如何从 livedata 中删除观察者,使其在导航回片段时不会显示两次
我有一个片段,当用户成功登录时会显示一个弹出窗口。如果我导航到一个新片段并返回,则会再次显示具有先前用户名的弹出窗口。我使用 SingleLiveEvent 解决了这个问题,但我现在必须重构我的代码以使用 MediatorLiveData,因为我的数据可以来自 2 个源(远程和数据库),并且它与 SingleLiveEvent 不兼容。
我尝试使用事件包装器并删除 onDestroyView() 上的观察者,但到目前为止没有任何工作,当我移回片段时,livedata onChanged 函数不断被调用。这是我的一些片段:
这是我的 ViewModel,我必须使用转换,因为我从片段中获取 userId,传递给 Viewmodel,后者将其传递给存储库进行查询(也许有更好的方法?):
android - Android Room 将 N 个查询的结果组合成一个实时数据列表
我有一个房间数据库设置,我想查询该数据库 N 次并将每个查询的结果组合到一个实时数据数组中以显示给用户。
我很确定我想使用MediatorLiveData
,但每个在线示例都有预定义数量的实时数据源组合。
我有以下设置:
宠物道
宠物资料库
android - MediatorLiveData 在 addSource 观察到的 LiveData 返回之前调用旧数据
下面是我在我的存储库中的方法:
这个问题是 UI 短暂显示过时的数据,但我希望 MediatorLiveData 对象 randomTrail 等到 currentRandomTrail 返回它的值。过时的数据首先出现,然后 MediatorLiveData 对象更新。知道为什么我的 MediatorLiveData 对象没有按预期工作吗?
android - 带过滤器的 LiveData?
我是 LiveData 的新手,最近我一直在做一些测试。我有一个应用程序,我需要在其中显示可以过滤的数据(名称、类别、日期......)。过滤器也可以组合(名称+日期)。该数据来自使用 Retrofit + RXJava 的 API 调用。
我知道我可以在不使用 LiveData 的情况下直接在我的视图中获取数据。但是,我认为使用 ViewModel + LiveData 会很有趣。首先,要测试它是如何工作的,还要避免在视图不活动时尝试设置数据(感谢 LiveData)并在配置更改时保存数据(感谢 ViewModel)。这些是我以前必须手动处理的事情。
所以问题是我没有找到一种方法来使用 LiveData 轻松处理过滤器。在用户选择一个过滤器的情况下,我设法使其与 switchMap 一起工作:
如果他选择两个过滤器,我发现我可以使用自定义 MediatorLiveData,这就是我所做的。但是,这里的问题是我的存储库调用与我拥有的过滤器数量一样多,而且我不能同时设置两个过滤器。
我的自定义 MediatorLiveData:
我是否充分了解 MediatorLiveData 的用法?是否可以使用 LiveData 实现我想要实现的目标?
谢谢!
android - LiveData 有两个来源?
我想对不同来源使用相同的 LiveData。一个来自 API 调用,它是可观察的,另一个来自数据库,它是 LiveData。我希望能够做这样的事情:
问题是 Transformation.map 总是返回一个 LiveData 并且为了使items.setValue(itemsList)项目需要是一个 MutableLiveData。我尝试使用 MediatorLiveData,但它调用了两个源并混合了所有内容。这不是我在这里需要的。我需要一个来源或另一个。可能吗?
android - Android MediatorLiveData 值更改被调用 2 次
我在从 firebase 获取数据的函数中有一个中介实时数据对象。
这是我的功能:
在我的活动中,我正在观察我的用户中介对象:
checkIfExistingUser()
当我单击我的登录按钮时调用此函数。但是在日志中我可以看到函数 decomposeDataSnapshots() 被调用了两次,我不知道为什么。请参阅下面的日志结果:
如您所见,数字 4 和 5 被调用了两次,我不知道为什么。
我是否以错误的方式使用调解器实时数据?请帮我。