使用 GithubBrowserSample 在没有 transformation.switchmap 的情况下在视图模型中调用存储库方法
Doing a repository method call in viewmodel without transformation.switchmap using GithubBrowserSample
Google的GithubBrowserSample是根据是否进行了搜索来调用结果。在我的场景中,没有任何搜索,我只想在片段加载时调用它。但是,我不确定该怎么做。利用断点和反复试验,我似乎无法将其标记为进入存储库方法 I select。如有任何提示,我们将不胜感激。
我的一些代码片段:
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);
}
});
}
对于同一条船上的任何其他人,通过简单地修改 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);
}
希望这对其他人有帮助。
Google的GithubBrowserSample是根据是否进行了搜索来调用结果。在我的场景中,没有任何搜索,我只想在片段加载时调用它。但是,我不确定该怎么做。利用断点和反复试验,我似乎无法将其标记为进入存储库方法 I select。如有任何提示,我们将不胜感激。
我的一些代码片段:
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);
}
});
}
对于同一条船上的任何其他人,通过简单地修改 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);
}
希望这对其他人有帮助。