问题标签 [android-livedata-transformations]

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.

0 投票
1 回答
179 浏览

android - 循环内的实时数据问题

我在带有 Loop 的 viewModel 中有一个 IOTCamera 函数。该函数应基于“selectedSlot”参数重复调用存储库 GET 函数,延迟 1 分钟。我的问题是循环(重复())无法正常工作。它适用于第一次迭代。但是第二次迭代永远不会被调用。

存储库函数将调用 Retrofit GET API 并收集数据。

如果有人知道原因,请更新。

0 投票
0 回答
107 浏览

android - androidx.appcompat:appcompat:1.3.0 Transformations.switchMap 不起作用

在我更新了我的 build.gradle 文件并设置了

我有一段代码

设置 pair 后serverIdContactId,Transformation 永远不会被触发!有什么变化?

0 投票
0 回答
119 浏览

android-livedata - 如何从callbackFlow协程的collectLatest更新liveData

我在做什么

我正在构建一个天气预报应用程序,该应用程序使用 fusedLocationProviderClient 获取设备位置并尝试根据该位置获取天气预报,我正在以现代方式执行此操作(即使用协程回调流)

这是我从 fusedLocationProviderClient 获取位置的代码

这是我的 ViewModel 代码

我的问题是什么

其中getWeatherOfCity(city)是一个暂停功能,所以因为我是 Coroutines 的新手,尤其是流程,所以我不确定我是否以正确的方式执行它(即执行location.postValue(city)是否正确),所以如果这不是正确的做法,那么正确的方法是什么,如果是,那么我的代码中的错误是什么

请帮我解决这个问题,在此先感谢:)

0 投票
2 回答
178 浏览

android - 在 Transformation.map android 中访问 Room DB

在我的数据库中,我有一个名为的表Account,看起来有点像这样

所以假设我们有以下数据库快照

server_id account_id first_name 1 10 Zak 1 11 Tom 1 12 Bob 1 13 Jim 1 14 Mike

现在我也有以下 POJO,它代表 chatRoom 内的可用视频室

所以我从我的 Socket 收到一个传入的响应,如下所示

我将它映射到一个列表中,所以我有

为了向用户显示这个可用的房间列表,我需要将 m(即现在房间内的成员)从 accountIds 转换为 account.firstnames。

所以我最终想要的是一个名为 RoomInfoItem 的新对象的列表,它将保存房间列表,其中 accountIds 从数据库的 Account 表中转换为 firstNames。

因此,如果我们进行转换,我们需要得到以下结果

我的活动需要使用 RoomInfoItems 观察 LiveData,所以我想要的是 LiveData<List> 以将其转换为 LiveData<List>。我怎样才能做到这一点?

0 投票
1 回答
131 浏览

java - Transformations.map() 返回 null

我正在编写一个 Kotlin 应用程序并使用 Firestore 作为我的数据库。我有 2LiveData秒来保存我当前用户的数据,定义如下:

不知何故userData为空,所有对它的引用(例如userData.value?.id:)抛出:

如果我添加?( userData?.value?.id),我会得到Unnecessary safe call on a non-null receiver of type LiveData<UserModel?>棉绒。怎么可能Transformations.map(...)返回null?

顺便说一句:我看到了这个类似的问题,但就我而言,我确实初始化了引用的MutableLiveData.

0 投票
1 回答
67 浏览

kotlin-coroutines - 我对 ViewModel + Kotlin Coroutines + LiveData 中的代码有疑问

我有一个视图模型

这是我的界面

所以我稍微调整了代码 LoginViewModel.signIn

LoginActivity.initEvent

我查过LiveData的官方文档,livedata{}初始化的时候都是调用的。一直没有重新分配,但是如果登录了,就不能直接启动应用,请求网络。

协程文件

虽然我终于取得了我的成绩,但我认为这不是最好的做法,所以我想寻求帮助!</p>

  • 补充代码 ApiRepository

BaseRemoteDataSource

0 投票
0 回答
26 浏览

android - 如何从 LiveDataReactiveStreams 中清除数据

我正在使用 RxJava3 从 Firestore 读取数据并通过 LiveDataReactiveStreams 将其转换为 LiveData。我有食物清单,点击食物我想加载有关该特定食物的详细信息。问题是,当用户单击一个项目并加载它时,在单击第二个项目后,他会从前一个项目中获取值一秒钟,直到加载新数据。我注意到我的存储库中的流总是触发新的点击并返回以前的数据,但我想显示新项目的第一个加载状态,然后显示该加载的项目。我将如何防止它返回以前的值,或清除 LiveData?

存储库

视图模型

0 投票
0 回答
47 浏览

android - Transformations.distinctUntilChanged() 不适用于 equals() 覆盖

我的目标:我想使用 Transformations.distinctUntilChanged() 方法创建一个应用程序,该应用程序在每次更新 LiveData 对象时显示一条 toast 消息。LiveData 对象是一个简单的自定义 Integer 对象 (MyInteger),每次单击按钮时递增 1。当 myInteger 超过 5 时,应用程序应该停止显示 toast 消息。要实现这个 >5 条件,应用程序必须重写 MyInteger 类的 equals() 方法(在 distinctUntilChanged() 类中调用 equals() 方法)。

问题:在下面的代码中,currentValue 和 previousValue 字段始终相同(第一次单击按钮除外)。因此,在 MainActivity 中未调用 onChanged,并且从第二次单击开始不会显示 Toast 消息。有关当前结果与我期望应该发生的情况,请参见下文。

请帮忙。同样,应用程序必须同时使用 distinctUntilChanged() 和覆盖的 equals() 方法。

块引用

块引用

块引用

0 投票
0 回答
31 浏览

android - 如何停止在 Transformation.map 中发射空值

我的代码类似于

fetchProfile 获取配置文件,updateProfile 更新配置文件。调用 updateProfile 后,profile 由于 Loading 发出 null,这是预期的。由于我在数据绑定布局中使用该配置文件实例(无法过滤),因此在生成网络调用时这些值变为空。有什么方法可以阻止配置文件实例不发出空值?

提前致谢。

0 投票
0 回答
38 浏览

android - java.lang.RuntimeException:调用观察者方法失败

请帮我解决我的问题。具有这些相同代码的应用程序运行良好,但现在每当我尝试从概览片段导航到详细片段时,应用程序就会崩溃。

我没有更改任何代码行仍然应用程序崩溃。请帮我解决一下这个。

这是日志猫:

这是 DetailViewModel 类:

错误在这部分:

这是上面的两个字符串:

我研究了 StackOverflow 中的所有示例,但没有解决我的问题。请帮忙。