Библиотека подкачки данных DataSource.Factory для нескольких источников данных Android - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть несколько источников данных.Но есть только один 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);

Это сработало для меня.

...