Существует метод loadItemsFromNetwork
.
private void loadItemsFromNetwork () {
showProgress ();
endPoint = RestApi.getInstance (). getEndPoint ();
Disposable disposable = endPoint.getNews ()
.map (NewsResponse :: getResults)
.flatMapIterable ((Function <List <NewsItem>, Iterable <NewsItem >>) newsItemList -> newsItemList)
.map (NewsTypeConverter :: newsToDatabase)
.toList ()
.subscribeOn (Schedulers.io ())
.observeOn (Schedulers.io ())
.doOnSuccess (this :: saveItemsToDB)
.observeOn (AndroidSchedulers.mainThread ())
.subscribe (this :: updateItems, this :: handleError);
compositeDisposable.add (disposable);
}
Он работает как надо, но мне нужно, чтобы после его завершения вызывался метод saveItemsToDB
.
private void saveItemsToDB (List <NewsEntity> newsEntityList) {
Utils.log ("*** Save to DB ***");
Utils.log ("*** Save List Size =" + newsEntityList.size () + "***");
newsDatabase.getNewsDao (). insertAll (newsEntityList);
}
Как я могу это сделать?Если, например, я добавляю метод saveItemsToDB
в цепочку к методу loadItemsFromNetwork
, получается интересная вещь.Я получаю лист с 44 элементами, он проходит к адаптеру, затем 44 элемента переносятся в saveItemsFromDB
, а затем снова лист с 1 элементом вылетает в адаптер.В итоге у меня на экране появляется 1 элемент https://gist.github.com/industradamus/3d3887f017347a08a89cab28a6bb5971
@Insert (onConflict = OnConflictStrategy.REPLACE)
void insertAll (List entities);
это метод DAO