【问题标题】:Passing value to LiveData in Android将值传递给 Android 中的 LiveData
【发布时间】:2018-09-29 19:51:51
【问题描述】:

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

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

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

它按预期工作。

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

但是.. LiveData 中的 setValue 是私有的,我无法为查询行发送任何参数。有 MutableLiveData,但我该如何实现呢?

【问题讨论】:

  • 您能再解释一下您的查询吗?还是没听懂。
  • 您需要添加一些进一步的解释,因为我不完全理解您要达到的目标。

标签: android android-room android-architecture-components android-livedata mutablelivedata


【解决方案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-11-22
  • 1970-01-01
  • 2023-03-26
  • 2022-09-25
  • 2015-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多