LiveData,是不是可以观察特定值

Posted

技术标签:

【中文标题】LiveData,是不是可以观察特定值【英文标题】:LiveData, is it possible to observe specific valueLiveData,是否可以观察特定值 【发布时间】:2022-01-16 14:37:28 【问题描述】:

我正在使用实时数据来同步同一视图上重复项目之间的数量变化。因此,如果有 7 个项目观察 qty 更新,并且其中 3 个具有相同的 id,如果其中一个被触发,即使其中 3 个应该被刷新,所有 7 个都将跟随。

我的问题是,是否可以订阅一个特定的值,而不是像主题订阅那样的整个字段,以便仅触发具有相同 id 的这 3 个项目

【问题讨论】:

【参考方案1】:

当您观察 LiveData 时,您的侦听器将在每次更新时获取存储在 LiveData 中的对象的所有更新。无法告诉 LiveData 对于您想要哪些特定的嵌套值是“智能的”。

如果您想将 LiveData 中的对象转换为满足您需求的不同对象,您可以使用Transformations.map() 根据您现在拥有的内容创建一个新的 LiveData。由您来确保代码仅在原始内容发生更改时才生成新的 LiveData 对象。

【讨论】:

以上是关于LiveData,是不是可以观察特定值的主要内容,如果未能解决你的问题,请参考以下文章

LiveData 防止在开始观察时收到最后一个值

如何创建可以保存状态的不可为空的 LiveData

Jetpack之LiveData扩展MediatorLiveData

Android LiveData防止在观察时接收到最后一个值

LiveDataBus

为啥新连接的观察者会触发两次 LiveData 观察者