Skip to content

Instantly share code, notes, and snippets.

@nbarishok
Last active February 28, 2016 00:50
Show Gist options
  • Save nbarishok/7b11cc4abd42a22dcd40 to your computer and use it in GitHub Desktop.
Save nbarishok/7b11cc4abd42a22dcd40 to your computer and use it in GitHub Desktop.
class WeatherCommunicationBus implements WeatherView, WeatherPresenter {
private static final String VIEW_STATE_KEY = "VIEW_STATE";
private WeatherViewState mViewState;
private WeatherPresenter mPresenter;
private WeatherView mView;
public WeatherCommunicationBus(WeatherPresenter presenter) {
mPresenter = presenter;
mViewState = createViewState();
mPresenter.attachView(this);
}
private WeatherViewState createViewState() {
return new WeatherViewState();
}
@Override
public void showLoading() {
mViewState.setStateShowLoading();
if (mView != null) { mView.showLoading(); }
}
@Override
public void hideLoading() {
mViewState.setStateHideLoading();
if (mView != null) { mView.hideLoading(); }
}
@Override
public void setData(WeatherViewModel data) {
if (mView != null) { mView.setData(data); }
}
@Override
public void showContent() {
mViewState.setStateShowContent();
if (mView != null) { mView.showContent(); }
}
@Override
public void showError(WeatherError error) {
mViewState.setStateShowError(error);
if (mView != null) { mView.showError(error); }
}
// presenter
@Override
public void loadWeather() {
mPresenter.loadWeather();
}
@Override
public void attachView(WeatherView view) {
mView = view;
mViewState.apply(view);
}
@Override
public void detachView() {
mView = null;
}
@Override
public void onCreate(@Nullable Bundle arguments, @Nullable Bundle savedInstanceState) {
mPresenter.onCreate(arguments, savedInstanceState);
if (savedInstanceState != null) {
if (savedInstanceState.containsKey(VIEW_STATE_KEY)) {
mViewState = savedInstanceState.getParcelable(VIEW_STATE_KEY);
}
}
}
@Override
public void onSaveInstanceState(Bundle bundle) {
mPresenter.onSaveInstanceState(bundle);
bundle.putParcelable(VIEW_STATE_KEY, mViewState);
}
@Override
public void onDestroy() {
mPresenter.detachView();
mPresenter.onDestroy();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment