android - 在 Android 中向 LiveData 传递值
问题描述
我是开发新手,我知道堆栈不适用于“完整代码请求”。但我被卡住了,找不到解决方案。
我正在使用Room
具有两列的数据库 -firstName
和lastName
. 我正在使用传递的firstName
参数加载数据库:
@Query("SELECT * FROM passenger WHERE firstName LIKE :firstName")
List<Passenger>getAllByName (String firstName);
它按预期工作。
但是..当我想更新Passenger
时,我需要一次又一次地填充数据。来了LiveData
和observer
。
但是.. setValue
inLiveData
是私有的,我不能为查询行发送任何参数。有 MutableLiveData,但我该如何实现呢?
解决方案
@Eduardas 似乎您需要返回 LiveData :
LiveData<List<Passenger>> getAllByName (String name);
您可以在 ViewModel 中编写转换,也可以直接从 Activity/Fragment 中观察它。
在活动/片段 onCreate() 或 onResume() 中:
YourDao.getAllByName(name).observe(this, new LiveData<List<Passenger>>(){
@Override
public void onChanged( @Nullable List<Passenger>) {
// update your adapter if the list isn't null
}
});
类似于上面的东西。您可以根据您的用例添加自定义。
推荐阅读
- jquery - 当用户单击发送按钮时,从 twitter 引导模式传递值
- c# - Asp.Net MVC 5 测试 IoC + 依赖注入
- css - 如何在没有弹性盒的情况下使图像使用最佳空间量
- javascript - 无法使用 PHP 执行查询,其中相同的查询在 phpmyadmin 中可以正常工作
- typescript - Redux 4.0 中存储增强器的 TypeScript 输入问题
- android - Android 模拟器作为`LowRamDevice`
- java - 声纳排除/包含
- javascript - 将按钮附加到 MCE 工具栏而不是替换(插件)
- json - 返回一个简单的 JSON 响应
- docusignapi - DocuSign:可以通过 REST API 检测当前经过身份验证的用户何时无法查看信封