AndroidMVPSample

1,604 阅读1分钟

MVP+Retrofit+RxJava实践小结,此Sample最初是Android MVP示例,后来融合Retrofit和RxJava,供参考。

效果预览

代码演示

public class MainActivity extends MvpActivity<MainPresenter> implements MainView {

    @Bind(R.id.text)
    TextView text;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        initToolBarAsHome("MVP+Retrofit+Rxjava");

    }

    @Override
    protected MainPresenter createPresenter() {
        return new MainPresenter(this);
    }


    @Override
    public void getDataSuccess(MainModel model) {
        //接口成功回调
        MainModel.WeatherinfoBean weatherinfo = model.getWeatherinfo();
        String showData = getResources().getString(R.string.city) + weatherinfo.getCity()
                + getResources().getString(R.string.wd) + weatherinfo.getWD()
                + getResources().getString(R.string.ws) + weatherinfo.getWS()
                + getResources().getString(R.string.time) + weatherinfo.getTime();
        text.setText(showData);
    }

    @Override
    public void getDataFail(String msg) {
        toastShow("网络不给力");

    }

    @Override
    public void showLoading() {
        showProgressDialog();
    }

    @Override
    public void hideLoading() {
        dismissProgressDialog();
    }


    @OnClick({R.id.button1, R.id.button2})
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.button1:
                //普通写法
                loadData();
                break;
            case R.id.button2:
                //MVP+Retrofit+Rxjava
                mvpPresenter.loadData("101310222");
                break;
        }
    }


    private void loadData() {
        showProgressDialog();
        addSubscription(apiStores.loadData("101190201"),
                new ApiCallback<MainModel>() {
                    @Override
                    public void onSuccess(MainModel model) {
                        MainModel.WeatherinfoBean weatherinfo = model.getWeatherinfo();
                        String showData = getResources().getString(R.string.city) + weatherinfo.getCity()
                                + getResources().getString(R.string.wd) + weatherinfo.getWD()
                                + getResources().getString(R.string.ws) + weatherinfo.getWS()
                                + getResources().getString(R.string.time) + weatherinfo.getTime();
                        text.setText(showData);
                    }

                    @Override
                    public void onFailure(int code, String msg) {
                        toastShow(msg);

                    }

                    @Override
                    public void onFinish() {
                        dismissProgressDialog();
                    }
                });
    }
}

详见博客

Android MVP+Retrofit+RxJava实践小结

推荐阅读

  1. Android MVP 实例

  2. Android Retrofit 2.0 使用-补充篇

  3. Android Retrofit 2.0使用

  4. RxJava

  5. RxBus

源码地址

github.com/WuXiaolong/…

微信公众号

欢迎微信扫一扫关注:不止于技术分享,每天进步一点点。