@Override public void loadData(int page) { if (mView != null && mView instanceof RepoListFragment) { int type = ((RepoListFragment) mView).getType(); final boolean isLoadMore = page > 1; final boolean hasData = ((RepoListFragment) mView).hasData(); startLoadData(!hasData); if (type == 0) { // Owned Repo GetMyRepoUseCase useCase = new GetMyRepoUseCaseImpl( GitHubDataRepository.getInstance(), JobExecutor.getInstance(), UIThread.getInstance()); useCase.execute( new GetMyRepoUseCase.Callback() { @Override public void onSuccess(List<Repository> repositories) { ((RepoListFragment) mView).refreshComplete(); onLoadOk(!hasData && repositories.isEmpty()); ((RepoListFragment) mView).render(repositories, isLoadMore); } @Override public void onError(Exception e) { ((RepoListFragment) mView).refreshComplete(); onLoadError(!hasData); ((RepoListFragment) mView).showToast("" + e); } }); } else if (type == 1) { // Starred Repo GetStarredRepoUseCase useCase = new GetStarredRepoUseCaseImpl( GitHubDataRepository.getInstance(), JobExecutor.getInstance(), UIThread.getInstance()); useCase.execute( new GetStarredRepoUseCase.Callback() { @Override public void onSuccess(List<Repository> repositories) { ((RepoListFragment) mView).refreshComplete(); onLoadOk(!hasData && repositories.isEmpty()); ((RepoListFragment) mView).render(repositories, isLoadMore); } @Override public void onError(Exception e) { ((RepoListFragment) mView).refreshComplete(); onLoadError(!hasData); ((RepoListFragment) mView).showToast("" + e); } }); } else { // Other ((RepoListFragment) mView).refreshComplete(); onLoadOk(true); } } }