Android 分页库DataSource.Factory用于多个数据源

Android 分页库DataSource.Factory用于多个数据源,android,android-paging,Android,Android Paging,我有多个数据源。但只有一个数据源工厂。因此,所有来源共享一个工厂。我需要每个数据源一个DataSourceFactory 在我的应用程序中,我有多个带有RecyclerViews的视图,因此有多个自定义数据源。那么,您最终是为每个数据源创建DataSource.Factory的多个实现,还是有更通用的解决方案 已编辑 我在我的案件中找到了解决办法。在我以前的版本中,我对所有数据源只使用了一个数据源工厂。现在,每当从ViewModel调用方法时,我都会创建Datasource工厂对象,如 priv

我有多个数据源。但只有一个数据源工厂。因此,所有来源共享一个工厂。我需要每个数据源一个DataSourceFactory

在我的应用程序中,我有多个带有RecyclerViews的视图,因此有多个自定义数据源。那么,您最终是为每个数据源创建DataSource.Factory的多个实现,还是有更通用的解决方案

已编辑

我在我的案件中找到了解决办法。在我以前的版本中,我对所有数据源只使用了一个数据源工厂。现在,每当从ViewModel调用方法时,我都会创建Datasource工厂对象,如

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);

这对我有用。

我已经回答了。检查我的答案