Skip to content

Instantly share code, notes, and snippets.

@burakiren
Created November 13, 2020 07:37
Show Gist options
  • Save burakiren/1183f25c714b14670424e0034cebfcab to your computer and use it in GitHub Desktop.
Save burakiren/1183f25c714b14670424e0034cebfcab to your computer and use it in GitHub Desktop.
MVI - ExampleFragment
public class ExampleFragment extends Fragment implements ExampleView {
@BindView(R.id.userData) TextView userData;
@BindView(R.id.loadingView) View loadingView;
@BindView(R.id.errorView) TextView errorView;
@BindView(R.id.emptyView) View emptyView;
@Override public Observable<String> showUserDataIntent() {
return "";
}
@Override public void render(ExampleViewState viewState) {
if (viewState instanceof ExampleViewState.userData) {
renderResult(((ExampleViewState.userData) viewState).getResult());
} else if (viewState instanceof ExampleViewState.Loading) {
renderLoading();
} else if (viewState instanceof ExampleViewState.Error) {
renderError();
} else if (viewState instanceof ExampleViewState.isPullToRefresh) {
renderPullToRefresh();
}else {
throw new IllegalArgumentException("Don't know how to render viewState " + viewState);
}
}
private void renderResult(User user) {
// set user data here
loadingView.setVisibility(View.GONE);
emptyView.setVisibility(View.GONE);
errorView.setVisibility(View.GONE);
}
private void renderLoading() {
// set loading view here
loadingView.setVisibility(View.VISIBLE);
errorView.setVisibility(View.GONE);
emptyView.setVisibility(View.GONE);
}
private void renderError() {
// set error view here
loadingView.setVisibility(View.GONE);
errorView.setVisibility(View.VISIBLE);
emptyView.setVisibility(View.GONE);
}
private void renderEmptyResult() {
// set empty view here, it can be initialize state for init adapter or sth else.
loadingView.setVisibility(View.GONE);
errorView.setVisibility(View.GONE);
emptyView.setVisibility(View.VISIBLE);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment