问题标签 [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.
android - Android 架构组件:绑定到 ViewModel
在使用新的架构组件时,我对数据绑定应该如何工作感到有些困惑。
假设我有一个带有列表、ProgressBar 和 TextView 的简单 Activity。Activity 应该负责控制所有视图的状态,而 ViewModel 应该保存数据和逻辑。例如,我的 Activity 现在看起来像这样:
而 ViewModel 它只负责加载数据并在列表准备好时通知 Activity,以便它可以准备适配器并显示数据:
我的问题是:显示/隐藏列表、进度条和错误文本的正确方法是什么?
我应该为 ViewModel 中的每个视图添加一个整数,使其控制视图并像这样使用它:
或者 ViewModel 应该为每个属性实例化一个 LiveData 对象:
在需要时更新它们的值并让 Activity 观察它们的值?
我真的很难理解这一点。如果有人能澄清这一点,那就太好了。
谢谢
android - map() 和 switchMap() 方法有什么区别?
LiveData 类的这两种方法有什么区别?官方文档和教程对此非常模糊。在map()方法中,第一个参数称为source,但在switchMap()中,它称为trigger。这背后的理由是什么?
android - 如何以及在何处使用 Transformations.switchMap?
在 Google 最近发布的 Android 架构组件库中,我们在Transformations
类中有两个静态函数。虽然该map
功能直截了当且易于理解,但我发现很难正确理解该switchMap
功能。
switchMap 的官方文档可以在这里找到。
有人可以通过实际示例解释如何以及在何处使用 switchMap 函数吗?
android - 如何使用新的架构组件跟踪 android 中的当前位置?
我有一个项目,我已经成功实现了位置跟踪功能,并且运行良好。我每 30 秒使用融合位置提供程序跟踪用户当前位置。(跟踪在 MainActivity 开始时开始)。
现在我打算用新引入的 android 架构组件来更新那个项目。但我不知道如何使用视图模型实现位置跟踪。在MainActivity 或 Application类中开始位置跟踪的正确位置在哪里?我应该使用ViewModel 还是 AndroidViewModel?如何实现这一点。
android - Android ROOM - 使用自定义插入查询时未触发 LiveData
我正在尝试存储我的应用程序经常从 API 获得的一些变量的值。我只想在变量更改其值以向用户显示某种“更改历史”时才向数据库表添加新行。我正在使用ROOM来存储数据。
我创建了一个实体:
道:
数据库对象:
用于存储单个数据库对象的 Singleton:
我在 Activity 的 onCreate() 中实例化的视图模型:
我预计每次当方法DatabaseDao.insertNewBalanceResponse()插入一行时都会触发BalanceView.onChanges()方法。
实际上BalanceView.onChanges()方法永远不会被解雇。为什么呢?我怎样才能做到这一点?
ps 但是,如果我将方法DatabaseDao.insertNewBalanceResponse()替换为原始方法:
一切正常,方法onChange()被调用。但是这种插入语句不符合我的需要。
android - 带有复选框的 livedata recyclerview
我正在实现 android 架构组件来查看买家列表并选择一个。
这是我的买家实体
我已在 recyclerview 中插入并显示它。
我想知道当点击一个买家时如何显示特定的买家被选中。
如果我点击一个买家之前选择的买家必须取消选择。
请帮我实现这一点。
编辑
这是我的适配器 xml 项
编辑 2 这里我如何在 recyclerview 中添加数据
android - 在 LiveData Observable 中使用 @IntDef
我正在研究如何更新一些现有代码以使用新的 Android LiveData 架构模式。希望代码示例是不言自明的,我正在努力让@IntDef / @Interface 与实时数据一起工作。我很高兴在 ViewModel 上为 SetAnsweredCorrectly、SetCheated 等创建方法,或者创建一个 MutableLiveData 属性并在代码中设置它,只是我正在努力了解如何使用除普通 Integer 之外的任何东西,它会丢失类型安全。
android - 当数据未更改时,Android ViewModel/MutableLiveData onChanged 在新片段中被调用
我遇到了 Android Mutable Live Data 的问题,这可能是因为我的理解不足。场景是我的 Android 选项卡中有 3 个列表。
在我的活动中,我打开了我的第一个片段。在这我称之为
public void openSort(SortType sortType)
到目前为止一切正常。然后我继续打开另一个包含第二个片段的选项卡。这第二个片段在它的
由于某种原因,第二个片段的 onChanged 也会被调用。我的假设是 onChanged 方法仅在视图模型中的数据更改时被调用,但似乎数据由 LiveData 存储并且再次通知观察者。
我们可以做些什么,以便在可变实时数据发生更改时“仅”通知片段?
android - LiveData 在第一次回调后删除观察者
收到第一个结果后如何移除观察者?以下是我尝试过的两种代码方式,但即使我删除了观察者,它们也会继续接收更新。