【发布时间】:2020-03-02 19:39:43
【问题描述】:
最近,我开始将我的应用程序合并到 LiveData 和 Room 中。
在android developer中查看文档后:
将在 mAppPkgList 更改时触发。
当我将新记录插入数据库时 mAppPkgList 更改,但 Transformations.switchMap 没有触发。
这是实现。
ViewModel class
public LiveData<List<Info>> mAppPkgList = new MutableLiveData<>(null);
public LiveData<List<Info>> mAppList = Transformations.switchMap(mAppPkgList, list->{
SLog.v(TAG,"Transformations.switchMap");
List<Info> retArr = new ArrayList<>();
//custom logic
MutableLiveData<List<Info>> ret = new MutableLiveData<>();
ret.setValue(retArr);
return ret;
});
...
mAppPkgList = appDAO.getInfo(id)
这是 DAO 中的代码。
@DAO
@Query("SELECT * from pkg WHERE id=:id")
LiveData<List<Info>> getInfo(int id);
...
每当我将新记录插入数据库时,您能帮我触发 Transformations.switchMap 吗?
提前致谢
【问题讨论】:
-
你需要用活跃的观察者观察
mAppList。 -
@EpicPandaForce。我已经在活动中观察到 mAppList。 model.mAppList.observer(activity, overver)
标签: android android-room android-livedata