问题标签 [android-livedata]

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 回答
999 浏览

android - 推动 Android AndroidViewModel 和 LiveData 的正确方法

我在我的项目中实现了 LiveData,但我对此有点困惑。它有效,但我不知道这是正确的方法。

我的实时数据类:

我的 ViewModel 类

我在我的 MainActivity 中使用它,如下所示:

在我的模拟测试用例中,我首先从数据库中删除所有客户端,然后从原始 json 加载一些客户端,然后将它们保存到数据库中。在我可以像这样从 AlertDialog 添加新客户端之后:

正如我写的那样,它工作正常,在我从 AlertDialog 添加新客户端后,适配器会更新。但是,如果有人确认此实现是使用 ViewModel 和 LiveData 的正确方法,那就太好了。谢谢

0 投票
2 回答
2751 浏览

android - 为什么在片段重新创建时 onChange() 调用了两次

我正在尝试使用新的 android 架构组件,但我有一刻感到困惑。

我创建了一个 ViewModel 类

在我的 LifeCycleFragment 中观察 LiveData

但是当我用另一个 Fragment 替换这个 Fragment 并切换回这个 Fragment 时,该方法onChange被调用了两次,并在rvAdapter.

0 投票
0 回答
356 浏览

android - 我应该已经使用 Google 架构组件了吗?

我开始从头开始构建一个应用程序,并且正在决定我应该使用什么架构和工具来开始,因为这些决定通常也会长期影响我们。

在 Google IO '17 中,他们刚刚发布了架构组件,即 LiveData、Room(for SQLite)、ViewModel 和 LifecycleOwners & LifecycleObservers。与我以前的应用程序相比,我发现这些组件是一个很大的优势。但是由于这些组件仍处于alpha阶段,我现在在我的 android 项目中使用这些组件是否是一个好习惯,或者我应该坚持使用已经存在的 3rd 方 ORM 而不是 Room 并使用不同的机制来更新数据比 LiveData 并等待几个月让他们发布相同的稳定版本?他们通常需要多长时间才能将其转换为稳定版本?

非常感谢!

0 投票
1 回答
2700 浏览

android - 如何在 mvvm android 中显示对话框

显示一个对话框,在 MVVM 中启动活动是一个视图责任。
在视图中,您有一个 VM 实例,但在 VM 中您没有视图实例。所以解决方案是使用实时数据并在视图中观察,对吗?
但是我不想使用实时数据呢?当我无权查看时如何显示对话框?

0 投票
1 回答
101 浏览

android - Android 架构组件 LiveData 数据变化

我已经开始研究最近引入的 android 架构组件。

我的问题是我只想要最后添加的元素而不是数据库中所有项目的列表,其次我想知道为新模型自动生成的 id,在插入元素时获取该 id 的最佳方法是什么。

0 投票
1 回答
1899 浏览

android - Robolectric 测试和 LiveData

为了同时掌握 Kotlin、LiveData 和 Robolectric,我做了一个简单的闪屏活动。

它在运行应用程序时可以正常工作,但在测试中无法正常工作。这就像实时数据的回调永远不会被触发,或者就像没有为其注册观察者一样。

这是测试:

活动:

视图模型(无论如何都会被嘲笑,因此不使用实现):

0 投票
2 回答
1687 浏览

java - 房间 - 未触发 LiveData

我正在尝试使用 Room 数据库和 LiveData。我有 ViewModel,其中包含他们从 dao 获得的 LiveData。如果我更新 a Transaction,则LiveData<List<Transaction>>可以观察到,但LiveData<Transaction>根本没有观察到。这怎么可能?我究竟做错了什么?

有类似的问题,它提到了使用非@Singleton注释类时的 Dagger 并发症,不幸的是,这不是我的问题,即使我使用 Dagger。

0 投票
3 回答
3470 浏览

android - LiveData 不会将数据从一个 Activity 更新到另一个 Activity - Android

我有 2 个Activity

  1. 列表Activity
  2. 细节Activity

列表Activity显示项目列表,Activity单击列表中的项目会显示详细信息。在ListActivity我们观察从数据库中获取提要的过程中,一旦我们这样做了,我们就会更新 UI。

列表页面

现在我们有一个DetailActivity更新提要(项目)并Activity完成的页面,但更改未反映在ListActivity.

详情页面

提要视图模型

为简单起见,一些代码已被抽象出来。如果需要,我可以添加它们以跟踪问题

0 投票
0 回答
167 浏览

android - 在布局膨胀之前触发 MutableLiveData 的观察者

我有一个MainActivity包含NavigationView抽屉菜单的。的NavigationView标头包含一个TextView我想用一些用户信息填充的。问题是,有时应用程序会在onChanged方法中崩溃,NullPointerException因为textUsernameis null。我的猜测是这是因为布局还没有完全膨胀。我已经实现了null检查(如下面的代码所示),这显然textUsername在大多数情况下只会导致空白。

我的onCreate方法如下所示:

在从回调中访问该布局之前,如何确保该布局已膨胀?谢谢。

编辑

activity_main.xml

activity_main_content.xml

drawer_menu_header.xml

0 投票
1 回答
1856 浏览

android - 从存储库返回 LiveData

这个示例存储库有一个方法public LiveData<Resource<List<Repo>>> loadRepos(String owner)

https://github.com/googlesamples/android-architecture-components/blob/master/GithubBrowserSample/app/src/main/java/com/android/example/github/repository/RepoRepository.java

我的问题是为什么将 Android API(即android.arch.lifecycle.LiveData)添加到数据层中?

将框架 API 与您的数据/实体混合在一起不是反清洁架构吗?

现在还不需要使用 Robolectric 进行单元测试RepoRepository吗?