我想对不同来源使用相同的 LiveData。一个来自 API 调用,它是可观察的,另一个来自数据库,它是 LiveData。我希望能够做这样的事情:
private LiveData<List<Items>> items = new MutableLiveData<>();
// this one comes from an API and it's an observable
public void onApiItemsSelected(String name) {
Disposable disposable = repository.getItemsFromApi(name)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(itemsList -> {
items.setValue(itemsList);
});
compositeDisposable.add(disposable);
}
// this one comes from the database and it's a livedata that I want to transform first
public void onDatabaseItemsSelected() {
items = Transformations.map(repository.getItemsFromdatabase(), itemsList -> {
List<Items> finalItemsList = new ArrayList<>();
for (Item item : itemsList) {
finalItemsList.add(itemsList.toSomething());
}
return finalItemsList;
});
}
问题是 Transformation.map 总是返回一个 LiveData 并且为了使items.setValue(itemsList)项目需要是一个 MutableLiveData。我尝试使用 MediatorLiveData,但它调用了两个源并混合了所有内容。这不是我在这里需要的。我需要一个来源或另一个。可能吗?