1

我是开发新手,我知道堆栈不适用于“完整代码请求”。但我被卡住了,找不到解决方案。

我正在使用Room具有两列的数据库 -firstNamelastName. 我正在使用传递的firstName参数加载数据库:

@Query("SELECT * FROM passenger WHERE firstName LIKE :firstName")
List<Passenger>getAllByName (String firstName);

它按预期工作。

但是..当我想更新Passenger时,我需要一次又一次地填充数据。来了LiveDataobserver

但是.. setValueinLiveData是私有的,我不能为查询行发送任何参数。有 MutableLiveData,但我该如何实现呢?

4

1 回答 1

-1

@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
   }
});

类似于上面的东西。您可以根据您的用例添加自定义。

于 2018-10-15T20:00:51.363 回答