android - 绑定未(尚未)初始化的 livedata 元素
问题描述
也许标题不太适合这个问题,所以我会解释一下。
在我的应用程序中,我向服务器发送请求以获取一般用户信息。如果我收到我想将它保存到本地房间数据库中。现在我们来解决这个问题。我想将这个用户直接绑定到数据库中的视图。但我无法绑定可能不存在的元素,因为请求正在进行中。
(我的坏解决方案):创建另一个拥有布尔值的 liveate 元素。我在 Activity 中创建了一个观察者,并在布尔值观察到“真”之后添加观察者。使用此解决方案,我无法在 xml 布局中使用“数据绑定”。
有人有想法吗?(如果您需要更多信息,请询问 - 我知道这是一个非常抽象的问题,没有任何代码)
解决方案
正如 Sanlok Lee 所说:
如果您重新分配
user
,那么它会变成一个完全不同的实例,并且观察者将不会听新的LiveData
. 相反,您可以这样做val user: MediatorLiveData<User>
,稍后您可以致电user.addSource(dao.getUserById(1), ...)
或者:只需从数据库加载用户(如果您知道数据库中没有用户)。例如,您可以在 UserRepository 中执行此操作。
val user: LiveData<User> = userDao.getUser()
当插入有效用户时,Livedata 将收到通知。
推荐阅读
- python - 袖扣(Plotly)箱线图未正确显示异常值
- python - 传单 jupyter 绘图颜色密度热图
- c - 使用 #define 创建与 C89 std 兼容的虚拟记录
- android-studio -
模拟器已启动但未被 android studio 检测到 - vbscript - 启动外部 exe 并设置超时 VBS
- java - Spring:作用域字段
- javascript - 为什么我的 json 返回 false?
- plotly - jupyterlab/plotly-extension 不会安装
- git - 如何在不克隆容器 git repo 的情况下获取 git 子模块的 git SHA1
- tensorflow - 如何知道从 Graph 中的张量名称列表中选择哪个张量?