Android mvc & mvp

来源:互联网 发布:超市购物篮数据下载 编辑:程序博客网 时间:2024/06/06 12:39

MVC

MVC是android中最常见的模式
V => View which is always represented by xml
M=> model,which is similar to bean in java
C => controller,activity

实例

Created with Raphaël 2.1.0a weather appCCMMimplimplgetWeatherinvoke getWeatherfetch weather datasquash all data into a Object,add callback to MainActivity
  • model
package com.xjp.androidmvcdemo.model;public interface WeatherModel {    void getWeather(String cityNumber, OnWeatherListener listener);}
  • model impl
package com.xjp.androidmvcdemo.model;public class WeatherModelImpl implements WeatherModel {    @Override    public void getWeather(String cityNumber, final OnWeatherListener listener) {        /*数据层操作*/        VolleyRequest.newInstance().newGsonRequest("http://www.weather.com.cn/data/sk/" + cityNumber + ".html",                Weather.class, new Response.Listener<Weather>() {                    @Override                    public void onResponse(Weather weather) {                        if (weather != null) {                            listener.onSuccess(weather);                        } else {                            listener.onError();                        }                    }                }, new Response.ErrorListener() {                    @Override                    public void onErrorResponse(VolleyError error) {                        listener.onError();                    }                });    }}
  • controller
package com.xjp.androidmvcdemo.controller;public class MainActivity extends ActionBarActivity implements OnWeatherListener{ @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        weatherModel = new WeatherModelImpl();        initView();    } @Override    public void onClick(View v) {        switch (v.getId()) {            case R.id.btn_go:                loadingDialog.show();                weatherModel.getWeather(cityNOInput.getText().toString().trim(), this);                break;        }    }}
0 0