问题标签 [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.
java - 我的 MediatorLiveData 没有更新
我不知道为什么我的 mediatorLiveData 没有更新?我还在我的活动文件中设置了观察者。我想做的是
- 单击一个按钮,将实时数据源添加到我的 mediatorLivedata
- 另一个将不断更改实时数据的按钮,以便我的中介实时数据应该更新(changeLiveData1 是此处的按钮)
我按照它似乎不起作用的顺序执行此操作。我也在构造调用期间初始化了我的第一点。还是同样的问题.. MainActivity.kt
MainViewModel.kt 类 MainViewModel : ViewModel() {
android-room - Android LiveData>:如何合并两个相似对象的数据源
我有一个名为 Transaction {} 的超类,还有两个扩展它的类
InTransaction 和 OutTransaction。
InTransaction 链接到另一个名为 Source 的 Room 实体,而 OutTransaction 链接到另一个名为 Category 的实体。
我能够单独观察每种类型的模型,它返回PagedList<? extends Transaction>
.
在我的 PagedListAdapter 中,我想显示这两种类型的项目。但是我的 MediatorLiveData 实现似乎无法正常工作。似乎最近的类型替换了旧的类型,因此只显示一种类型的交易。
我希望能够看到所有类型的交易。以下是我当前的代码。
我确实了解 MediatorLiveData 不会为您进行合并,而只是通知您更改。
如何将两者合并PagedList
为一个然后提交到列表?
我正在考虑做这样的事情,但不知道如何实例化聚合器PagedList
谢谢
android - MediatorLiveData This source was already added with the different observer in activity when navigate with onbackpressesed between activities
I have an ugly error with mediator live data... and I can´t understand the problem. I have one activity A which asks for messages to the backend, when I come back from the background I always have to refresh again if there is data, then always call in onResume() to get the info , my code is as follows
When I click on an item in the list, I go to another activity B which has a logic identical to the previous one but obviously with a different backend call. When I go back from activity B to activity A I have onActivityResult and I request the data for activity A again, everything works fine. The problem is the following, now I have had to add an activity C, which is navigated from activity B.
This activity C has the same call logic as the previous activities. The problem is that when I pressed on back from activity C and go to B, Activity B, I get an error in Activity A.
I add breakpoints in Activity A onResume and onActivityResult but never is called!!
I don´t understand the problem...
Can anybody help me?
java - “合并”数据或“设置”数据,MediatorLiveData
文档(https://developer.android.com/reference/androidx/lifecycle/MediatorLiveData)谈论合并数据......但功能显然是设置它。
当我考虑“合并”时,我会想到诸如 .add() 或 .put() 或 .set(X x, Y y),.. 之类的东西,我可以将 2 个对象捆绑在一个中,或者一个列表对象或对象数组。
但是函数说.setValue(),文档说合并
日志给我的印象是前 2 个 setValue() 被完全忽略:
所以不是:
只有第一个 .setValue(folders) 显示在 Fragment 上,我猜这只是因为它在 3 个要解决的查询中花费的时间最长。
……
因此,如果我对合并的概念有误,我需要在其中使用 Diff.Util 执行 LiveData/MutableLiveData<List<?>> 来管理传入列表或单个对象以及处理异步时间的信号量( ?也许?)..和一个 .add() 和 .replace() 函数相应地,等等...,但是我可以使用任何 LiveData,而不是 MediatorLiveData<>。
有什么我可以用的吗?
我错过了什么?
最糟糕的是,如果 MediatorLiveData 像我认为的那样做,那么在正确处理其生命周期的同时将多个 LiveData 连接到单个观察者真的不难......重点是什么。
我看到一些使用 .combine(data1, data2) 的 Kotlin 示例,但该函数甚至不存在。
android - 哪个是组合多个 LiveData(s) 的更好方法:使用 MediatorLiveData 或 switchMap?
更推荐哪种方法来组合多个 LiveData(s):使用MediatorLiveData
or switchMap
?
该MediatorLiveData
方法可能更常见,但该switchMap
方法看起来更简单。在许多情况下,这两种方法似乎都具有相同的目的。
android - Transformations.map() 返回空值
我正在编写一个程序,其中有两个 LiveData 对象,如图所示:
问题是每当我观察到selectedImages LiveData它工作正常,但是当我观察到selectedBitmaps LiveData它返回以下错误:
我认为 Transformations.map() 返回空值。我之前在一个项目中做过类似的事情,当我使用 Transformations.map() 时也发生了同样的事情。有谁知道为什么会这样?
android-lifecycle - Android MediatorLiveData 将多个 LiveData 结果组合成单个 LiveData 对象(在 Java 中)
我使用 2 LiveData
s 从单独的表到我的应用程序的存储库中。我将这两个LiveData
s 作为源添加到CustomMediatorLiveData
扩展的类中MediatorLiveData
。在each 方法的onChanged
回调中,我将两个s 的值发送到一个将两者结合并返回一个设置为对象的单个方法中。我在我的存储库中创建了一个对象,并将这两个s 作为构造函数的参数传递。addSource
LiveData
LiveData
LiveData
value
CustomMediatorLiveData
CustomMediatorLiveData
LiveData
这会运行并且不会给出任何错误,但它会弄乱 LiveData 本身的数据。
示例:如果日期最初是 2020 年 8 月 15 日,那么它可能类似于 0001 年 8 月 14 日。
CustomMediatorLiveData:
注意存储库类:
我尝试使用该MediatorLiveData
对象并将两个LiveData
源添加到存储库本身中,但同样的问题仍然存在。
实现这一点的正确方法是什么?如何将 2 LiveData
s 组合成一个LiveData
可以观察到的单个。
java - 我需要对两个从单独的 SQL 查询返回的 livedata 对象执行算术运算(减法)
我是编码和移动应用程序开发的相对新手,但我热衷、热情并想学习!
这是我对 SO 提出的第一个问题,如果我以我问的方式破坏了礼仪,请提前道歉。
我正在编写一个应用程序来跟踪游泳者的个人最佳时间,我几乎完成了使用 Room 查询 sql db 的编码,并使用正常的 dao、存储库和视图模型架构来返回我的游泳时间和资格赛时间。最后一步是从项目资格时间中减去游泳运动员的比赛时间。这就是我挣扎的地方!
最初,我尝试如下嵌套我的 livedata 对象,但是在内部进行算术运算时,无法访问外部 livedata。
在对 SO 进行了一些研究之后,我遇到了以下问题,该问题表明 mediatorlivedata 是我处理多个 livedata 源所需的工具。但是,我似乎无法使用建议的代码来解决我的问题。
任何有助于理解此代码和解释 mediatorlivedata 如何工作的帮助都将被接受。不幸的是,Android 开发者参考在这方面并不是很有帮助。
提前致谢,
伊尔
android - 如何将 MediatorLiveData 与抽象源一起使用
我有一个抽象类,MediatorLiveData
里面有一个对象。这个对象有很多来源,其中一个依赖于子类,并且abstract
在父类中。在块中添加源init
会在运行时导致 NullPointerException,因为在 init 块添加源时,它仍然是抽象的(或者我被引导相信)。
有没有办法将 aabstract
LiveData
用作 a 的源MediatorLiveData
而不必在子类中设置该源?我只想override val
完成它,因为我肯定会addSources()
在将来的某个时候忘记调用该函数。
(我知道这个例子并不是做这件事最有用的方法,但我不想增加不必要的复杂性)
例子:
在阅读了 Stachu 的回答后,我决定使用这个,我没有测试,但我认为应该可以:
android - 嵌套转换而不是合并的实时数据
我有两个 livedatas startedAt
&finishedAt
并希望在依赖于这两个值的转换中使用它们...我尝试使用 mediatorliveData 组合它们
并观察他们
但这并没有按预期工作,因为 finishedAt 在获得所需值之前返回 null ,
调试结果:
V/检查索引:0 1 空
V/检查索引:0 1 1
在转换中使用转换是个好主意吗?前任: