问题标签 [mutablelivedata]

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 投票
0 回答
193 浏览

android - 在 Android Java 中第一次调用后 LiveData 没有更新

我正在尝试构建一个应用程序来从服务器获取提要列表并在 Recyclerview 中显示。我正在尝试这样的 LiveData 基本实现。

我在我的片段中设置了一个观察者,如下所示:

我的 SellViewModel 类是这样的:

}

我的 SellRepository 是这样的:

我的问题是当我将新的销售商品添加到数据库时,它不会更新移动应用程序。

0 投票
1 回答
2276 浏览

android - Android:将 LiveData 设置为 MutableLiveData

首先,我可能实际上并没有理解什么是可变的实时数据是正确的。

我使用实时数据从房间获取数据,然后将其显示给 UI,这是一个带有答案的问题,所以在问题结束时,我想用正确的答案、花费的时间等更新数据库。

我无法弄清楚如何使用可变实时数据,因为它几乎没有有用的信息,或者我非常愚蠢!

那么首先,我真的可以用可变的实时数据更新数据库吗?

如果是这样怎么办?(我不喜欢问这个,但我真的很难过)

回购

视图模型

然后在 View 中观察它

下一部分是我不确定的地方。我在视图模型中添加了这个

然后尝试将 this 分配给问题

所以我可以使用更新值,但这会引发 Casting 错误。

我要么遗漏了一些东西,要么我不能这样做,所以欢迎任何帮助谢谢

0 投票
0 回答
2445 浏览

unit-testing - 即使添加了“core-testing”依赖项,也无法在我的“jUnit”测试用例中导入 InstantTaskExecutorRule - Android 测试

我正在为我的LoginViewModel. 我想setValue()对我的MutableLiveData.

为了避免android.os.Looper 中的 Method getMainLooper not mocked异常,我尝试Rule在我的 ViewModel 文件中添加以下内容test 文件夹

@Rule public InstantTaskExecutorRule mInstantTaskExecutorRule = new InstantTaskExecutorRule();

为此,我添加了以下依赖项:

但是,我仍然无法InstantTaskExecutorRule在我的 LoginViewModelTest 文件中导入。可能是什么问题?

虽然它被导入到我们编写集成或 UI 测试用例的androidTest文件夹中!但不在我们编写 jUnit 测试用例的测试文件夹中!

先感谢您。

请参考构建。毕业文件:

导入错误截图

0 投票
1 回答
353 浏览

android - 如何在我的 xml 中使用 MutableLiveData 对象?

我有一个对象可以填充我的 xml 中的一些字段,但是 mutablelivedata 返回一个 T 值,我不能使用 T 属性。我需要做什么才能在我的 xml 中使用 T 对象?

我不想为每个对象成员创建一个 mutablelivedata。

对不起,我的英语不好..

0 投票
1 回答
486 浏览

android - 房间不返回重复项

所以我已经设置了一个房间数据库,一切都很好,所以我可以进行查询和插入,删除等没有问题,但是我刚刚遇到了一种情况,id 喜欢按他们的 ID 返回条目并且应该允许重复,但是房间正在删除重复项,因此例如,我向它发送了一个 ID 列表,例如 <1,2,3,2,3> 并且它通过它们的 ID 返回项目,但只向我发送 <1,2,3> 删除重复条目。我正在做的查询如下(顺便说一句,sql 的完整菜鸟)

我通过我创建的存储库(只是一个抽象级别)使用它并从 ViewModel 调用这个 repo,这个 ViewModel 有一个包含 id 的可变实时数据整数列表,并使用 SwitchMap 我得到最新的实时数据。生病包括下面的相关部分

CARD REPO 像这样调用我的 Daos 方法

ViewModel 需要它们

当 cardIds 列表更新时,通过 SwitchMap 的魔力进行了新的查询,我从我的片段中观察了 ViewModel。我已经对其进行了调试,因此我知道 Id 列表是正确的并且具有重复的 Id,但是返回的 LiveData 列表缺少重复的 Id。有什么帮助吗?

0 投票
1 回答
190 浏览

android - Parceler:找不到 MutableLiveData 类型的读/写生成器在 Android 视图模型中

当我将 MutableLiveData 对象添加到我的 Android Studio 项目中的视图模型时,我遇到了编译构建错误。我还没有在任何地方调用 getUser() 或 setUser() 并且我将完全相同的对象添加到我的项目中的不同视图模型并且没有收到错误,所以我不确定问题是什么。

错误: error: Parceler: Unable to find read/write generator for type androidx.lifecycle.MutableLiveData<com.example.demometvtest1.User> for com.example.demometvtest1.RegisterViewModel.user

RegisterViewModel.java:

0 投票
1 回答
1493 浏览

android - 具有 mutablelivedata 支持属性的观察到的 livedata 如何知道在从未直接更新时触发观察者?

我正在通过 udacity 关注 google android 项目“猜猜看”,他们在其中引入了 livedata 和 mutablelivedata。我们已经到了创建一个与 mutablelivedata 对象等效的 livedata 并为 mutablelivedata 实例的 livedata 创建一个 get() 支持属性的地步。我们使用 mutablelivedata 实例对 viewModel 中的数据进行所有更改。我们的 UI 片段在 viewModel 的 livedata 对象上设置观察者,而不是 mutablelivedata 对象。

尽管观察者在 livedata 实例而不是 mutablelivedata 实例上,但当 mutablelivedata 对象更新时,将触发 livedata 观察者代码。我喜欢它像这样工作,但我不完全理解它是如何工作的。谁能给我解释一下?

在视图模型中

在 ViewModel 中编辑

在 UI 片段中

0 投票
0 回答
249 浏览

java - 如何在 MVVM 中使用视图模型从服务中不断更新 livedata 对象?

我正在尝试根据长期运行的服务输出不断更新 UI。基本上,我想在绑定服务处理完用户列表后一一显示和附加用户列表。

MainActivityViewModel

我的服务

在这里,我将一个一个地发送 POST 方法 100 次,并将作为需要是 liveData 的用户对象获得响应。因此,一旦在下一个 post 方法之后更改了此对象,我希望它在 UI 上显示或附加。

如何将此动态用户对象变量绑定到在 MainActivityViewModel 类中创建的 MutableLiveData 用户?所以这会在 UI 中自动更新。

请让我知道我在这两个课程中都缺少什么。

0 投票
1 回答
543 浏览

android - 将 getLoaderManager().initLoader 替换为 MutableLivedata

getLoaderManager 已在 android 28 中弃用。ViewModel、Repository 和 Room 替换了加载器功能

我找到了2篇文章:

https://medium.com/@JasonCromer/making-room-less-database-queries-using-the-new-android-architecture-components-81180ba6e7e0

https://medium.com/androiddevelopers/lifecycle-aware-data-loading-with-android-architecture-components-f95484159de4

但两者都没有显示如何将光标传递给我的自定义适配器(扩展 RecyclerViewCursorAdapter)。

我的播放列表视图模型

我的数据库存储库

在受保护的 void onQueryComplete 中,游标返回值 这是我想要的游标,但示例代码将其关闭。????

在我的片段中,我设置了观察者

问题: - 我如何获得光标。我从文档中知道它应该通过 ViewModel。- 我需要将光标传递给适配器还是可以从适配器内部访问光标。- 我对创建游标的存储库感到困惑,但是 mutableLivedata 以及如何访问它呢?

0 投票
1 回答
887 浏览

android - Android MediatorLive 数据源订阅未触发

在我的项目中,我使用了稍微修改的存储库模式:

  • 数据源(例如 API、数据库)。提供实体的 CRUD
  • 处理数据源协调的特定数据的存储库(例如 UserRepository、SettingsRepository)(例如从 API 调用更新数据库)。提供高于 CRUD 的基本功能
  • ViewModel 使用存储库并从存储库调用中创建流程(例如,使用 UserRepository 同步用户数据,然后使用 SettingsRepository 为用户同步设置)
  • 视图是数据绑定的

在我的存储库中,我使用暴露的 LiveData<*> 字段来传达状态 - 例如,UserRepository 将有一个currentUser公共类型的 LiveData 字段,私有的 MediatorLiveData,并且它将链接到一个私有字段,该字段包含要检索的当前用户 ID。

但是,出于某种原因,这些订阅(使用 MediatorLiveData 的addSource() {}方法)不会触发。

一个几乎 1:1 的示例(由于 NDA 替换了型号名称)如下:

实施此示例后updateCurrentUser(),即使对其他 LiveData 字段的订阅发生并且在currentUser对象上调试时可见,也不会被调用。

通过相同的订阅addSource在其他存储库中也可以正常工作,并且它们的构建方式与上述相同。

这里可能出了什么问题?