Выполнение вызова метода репозитория в viewmodel без translation.switchmap с использованием GithubBrowserSample - PullRequest
0 голосов
/ 17 мая 2019

Google's GithubBrowserSample основан на том, если был выполнен поиск, чтобы он вызывал результаты.В моем сценарии нет поиска, я просто хочу вызвать его при загрузке фрагмента.Однако я не уверен, как это сделать.Используя точки останова и метод проб и ошибок, я не могу пометить его, чтобы перейти к методу репозитория, который я выбрал.Любые советы будут оценены.

Некоторые фрагменты моего кода:

public class CategoryViewModel extends ViewModel {

    private final LiveData<Resource<List<Category>>> categories;

    @Inject
    CategoryViewModel(@NonNull CategoryRepository categoryRepository){
        categories = categoryRepository.getDBCategories();
    }

Эквивалент в образце:

public class SearchViewModel extends ViewModel {

    private final MutableLiveData<String> query = new MutableLiveData<>();

    private final LiveData<Resource<List<Repo>>> results;

    private final NextPageHandler nextPageHandler;

    @Inject
    SearchViewModel(RepoRepository repoRepository) {
        nextPageHandler = new NextPageHandler(repoRepository);
        results = Transformations.switchMap(query, search -> {
            if (search == null || search.trim().length() == 0) {
                return AbsentLiveData.create();
            } else {
                return repoRepository.search(search);
            }
        });
    }

1 Ответ

0 голосов
/ 17 мая 2019

Для всех, кто находится в той же лодке, просто изменив конструктор SearchViewModel, чтобы жестко закодировать запрос, я вскоре смог выяснить, что это может сразу же загружаться даже в пример приложения, поскольку данные наблюдаются во фрагменте поиска. .

Итак, я включил SearchViewModel:

@Inject
SearchViewModel(RepoRepository repoRepository) {
    nextPageHandler = new NextPageHandler(repoRepository);
    results = Transformations.switchMap(query, search -> {
        if (search == null || search.trim().length() == 0) {
           return AbsentLiveData.create();
        } else {
            return repoRepository.search(search);
        }
    });
}

К

@Inject
SearchViewModel(RepoRepository repoRepository) {
    results = repoRepository.search("shadow");
    nextPageHandler = new NextPageHandler(repoRepository);
}

Надеюсь, это поможет кому-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...