如何在android中实现嵌套的实时数据:我需要将serverMovies传递到实时数据的第二级
activityViewModel.getAllMovies().observe(this, new Observer<List<Movie>>() {
@Override
public void onChanged(List<Movie> serverMovies) {
Log.d("",serverMovies+"");
activityViewModel.insertMoviesIntoLocalDatabase(serverMovies).observe(this, new Observer<List<Movie>>() {
@Override
public void onChanged(@Nullable List<Movie> movies) {
Log.d("",movies+"");
/*contactArrayList.clear();
contactArrayList.addAll(contacts);
contactsAdapter.notifyDataSetChanged();*/
}
});
}
});
答案 0 :(得分:1)
我也可以使用switchmap
:
Transformations.switchMap(
activityViewModel.getAllMovies(), (x) ->
activityViewModel.insertMoviesIntoLocalDatabase(x))
.observe(this, movies ->
movieAdapter.setData(new ArrayList<>(movies))
);
答案 1 :(得分:0)
您需要添加一个Mediator Live Data来响应电影实时数据中的变化。
类似这样的
LiveData<List<Movies>> moviesLiveData = getAllMovies();
MediatorLiveData mediatorLiveData = new MediatorLiveData<>();
mediatorLiveData.addSource(moviesLiveData, value -> mediatorLiveData.setValue(value));
因此,当原始实时数据的值更改时,调解器实时数据的值也更改了,那么您可以随时观察它。