Last active
August 19, 2018 15:40
-
-
Save ibrahimsn98/a38674b73ba1d0fc4c417dc88c218b35 to your computer and use it in GitHub Desktop.
android-mvvm-with-dagger-2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class ListFragment extends BaseFragment implements RepoSelectedListener { | |
@BindView(R.id.recyclerView) RecyclerView listView; | |
@BindView(R.id.tv_error) TextView errorTextView; | |
@BindView(R.id.loading_view) View loadingView; | |
@Inject ViewModelFactory viewModelFactory; | |
private ListViewModel viewModel; | |
@Override | |
protected int layoutRes() { | |
return R.layout.screen_list; | |
} | |
@Override | |
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { | |
viewModel = ViewModelProviders.of(this, viewModelFactory).get(ListViewModel.class); | |
listView.addItemDecoration(new DividerItemDecoration(getBaseActivity(), DividerItemDecoration.VERTICAL)); | |
listView.setAdapter(new RepoListAdapter(viewModel, this, this)); | |
listView.setLayoutManager(new LinearLayoutManager(getContext())); | |
observableViewModel(); | |
} | |
@Override | |
public void onRepoSelected(Repo repo) { | |
DetailsViewModel detailsViewModel = ViewModelProviders.of(getBaseActivity(), viewModelFactory).get(DetailsViewModel.class); | |
detailsViewModel.setSelectedRepo(repo); | |
getBaseActivity().getSupportFragmentManager().beginTransaction().replace(R.id.screenContainer, new DetailsFragment()) | |
.addToBackStack(null).commit(); | |
} | |
private void observableViewModel() { | |
viewModel.getRepos().observe(this, repos -> { | |
if(repos != null) listView.setVisibility(View.VISIBLE); | |
}); | |
viewModel.getError().observe(this, isError -> { | |
if (isError != null) if(isError) { | |
errorTextView.setVisibility(View.VISIBLE); | |
listView.setVisibility(View.GONE); | |
errorTextView.setText("An Error Occurred While Loading Data!"); | |
}else { | |
errorTextView.setVisibility(View.GONE); | |
errorTextView.setText(null); | |
} | |
}); | |
viewModel.getLoading().observe(this, isLoading -> { | |
if (isLoading != null) { | |
loadingView.setVisibility(isLoading ? View.VISIBLE : View.GONE); | |
if (isLoading) { | |
errorTextView.setVisibility(View.GONE); | |
listView.setVisibility(View.GONE); | |
} | |
} | |
}); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment