У меня есть несколько источников данных.Но есть только один DataSourceFactory.Итак, все источники делятся на одну фабрику.Мне нужен один DataSourceFactory для каждого источника данных.
В моем приложении у меня есть несколько представлений с RecyclerViews и, следовательно, несколько пользовательских источников данных.Итак, вы в конечном итоге создаете несколько реализаций DataSource.Factory для одного источника данных или есть более общее решение?
Отредактировано
Я нашел решение в моем случае,В моей предыдущей версии я использовал только одну фабрику источников данных для всех источников данных.Теперь я создаю Datasource Factory Object всякий раз, когда вызываю метод из ViewModel, например,
private void initData(String id) {
executor = Executors.newFixedThreadPool(5);
factory = new EvaluationDataSourceFactory(compositeDisposable, api, id);
networkState = Transformations.switchMap(factory.getDataSource(), source -> {
Timber.d("network status get");
return source.getNetworkState();
}
);
PagedList.Config pagedListConfig =
(new PagedList.Config.Builder())
.setEnablePlaceholders(false)
.setInitialLoadSizeHint(5)
.setPrefetchDistance(5)
.setPageSize(5).build();
error = Transformations.switchMap(factory.getDataSource(), source -> {
return source.getError();
});
assessments = (new LivePagedListBuilder(factory, pagedListConfig)).setFetchExecutor(executor).build();
}
public void getAssessments(String id) {
initData(id);
}
Затем вы можете вызывать этот метод из своей деятельности или фрагмента, например
viewModel.getAssessments(id);
Это сработало для меня.