我有多个数据源。但只有一个DataSourceFactory。因此,所有来源都共享一个工厂。我需要每个数据源一个 DataSourceFactory。
在我的应用程序中,我有多个 RecyclerViews 视图,因此有多个自定义数据源。那么,您最终是否会为每个数据源创建 DataSource.Factory 的多个实现,还是有更通用的解决方案?
Edited
我在我的案例中找到了解决方案。在我之前的版本中,我仅对所有数据源使用一个数据源工厂。现在,每当从 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);
这对我有用。
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)