- api包主要存放网络请求接口
- bean包中存放实体类
- model包中存放处理数据
- pesenter包中存放主导器
- view包中存放界面处理
view的代码:
public interface WeatherView { void showProgress() void hideProgress() void loadWeather(WeatherData weatherData)}package com.lidong.demo.android_rapid_development_of_library.mvpimport android.os.Bundleimport android.support.v7.app.AppCompatActivityimport android.support.v7.widget.Toolbarimport android.util.Logimport android.widget.TextViewimport android.widget.Toastimport com.lidong.android_ibrary.LoadingUIHelperimport com.lidong.demo.android_rapid_development_of_library.Rimport com.lidong.demo.android_rapid_development_of_library.mvp.bean.WeatherDataimport com.lidong.demo.android_rapid_development_of_library.mvp.presenter.WeatherPresenterimport com.lidong.demo.android_rapid_development_of_library.mvp.presenter.WeatherPresenterImpimport com.lidong.demo.android_rapid_development_of_library.mvp.view.WeatherViewimport butterknife.Bindimport butterknife.ButterKnifepublic class WeatherActivity extends AppCompatActivity implements WeatherView { @Bind(R.id.toolbar) Toolbar toolbar @Bind(R.id.textView1) TextView textView1 @Bind(R.id.textView2) TextView textView2 @Bind(R.id.textView3) TextView textView3 @Bind(R.id.textView4) TextView textView4 @Bind(R.id.textView5) TextView textView5 @Bind(R.id.textView6) TextView textView6 @Bind(R.id.textView7) TextView textView7 @Bind(R.id.textView8) TextView textView8 @Bind(R.id.textView9) TextView textView9 private WeatherPresenter mWeatherPresenter @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_weather) ButterKnife.bind(this) setSupportActionBar(toolbar) mWeatherPresenter = new WeatherPresenterImp(this) mWeatherPresenter.getWeatherData("2", "苏州") } @Override public void showProgress() { LoadingUIHelper.showDialogForLoading(this,"获取数据",false) } @Override public void hideProgress() { LoadingUIHelper.hideDialogForLoading() Toast.makeText(this,"服务器异常",Toast.LENGTH_SHORT).show() } @Override public void loadWeather(WeatherData weatherData) { Log.d("weatherData", "weatherData==" + weatherData.toString()) textView1.setText("城市:"+weatherData.getResult().getToday().getCity()) textView2.setText("日期:"+weatherData.getResult().getToday().getWeek()) textView3.setText("今日温度:"+weatherData.getResult().getToday().getTemperature()) textView4.setText("天气标识:" +WeatherIDUtils.transfer(weatherData.getResult().getToday().getWeather_id().getFa())) textView5.setText("穿衣指数:" + weatherData.getResult().getToday().getDressing_advice()) textView6.setText("干燥指数:"+weatherData.getResult().getToday().getDressing_index()) textView7.setText("紫外线强度:"+weatherData.getResult().getToday().getUv_index()) textView8.setText("穿衣建议:"+weatherData.getResult().getToday().getDressing_advice()) textView9.setText("旅游指数:"+weatherData.getResult().getToday().getTravel_index()) }}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
model层中的代码
/** * * Created by lidong on 2016/3/2. */public interface WeatherModel { /** * 获取天气信息 * @param format * @param city */ void getWeatherData(String format,String city);}/** * Created by lidong on 2016/3/2. */public class WeatherModelImp implements WeatherModel { private WeatherOnListener mWeatherOnListener; public WeatherModelImp(WeatherOnListener mWeatherOnListener) { this.mWeatherOnListener = mWeatherOnListener; } @Override public void getWeatherData(String format,String city) { ApiManager.getWeatherData(format,city).subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Action1<WeatherData>() { @Override public void call(WeatherData weatherData) { mWeatherOnListener.onSuccess(weatherData); } }, new Action1<Throwable>() { @Override public void call(Throwable throwable) { mWeatherOnListener.onFailure(throwable); } }); } /** *回调接口 */ public interface WeatherOnListener{ void onSuccess(WeatherData s); void onFailure(Throwable e); }}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
presenter层中的代码:
/** * Created by lidong on 2016/3/2. */public interface WeatherPresenter { /** * 获取天气信息 * @param format * @param city */ void getWeatherData(String format, String city);}public class WeatherPresenterImp implements WeatherPresenter ,WeatherModelImp.WeatherOnListener{ /** * WeatherModel和WeatherView都是通过接口来实现,这就Java设计原则中依赖倒置原则使用 */ private WeatherModel mWeatherModel; private WeatherView mWeatherView; public WeatherPresenterImp( WeatherView mWeatherView) { this.mWeatherModel = new WeatherModelImp(this); this.mWeatherView = mWeatherView; } @Override public void getWeatherData(String format, String city) { mWeatherView.showProgress(); mWeatherModel.getWeatherData(format,city); } @Override public void onSuccess(WeatherData s) { mWeatherView.loadWeather(s); mWeatherView.hideProgress(); Log.d("-------", "onSuccess() called with: " + "s = [" + s.toString() + "]"); } @Override public void onFailure(Throwable e) { mWeatherView.hideProgress(); Log.d("-------","onFailure"+e.getMessage()); }}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
api层的代码
package com.lidong.demo.android_rapid_development_of_library.mvp.api;import com.lidong.demo.android_rapid_development_of_library.mvp.bean.WeatherData;import retrofit.GsonConverterFactory;import retrofit.Retrofit;import retrofit.RxJavaCallAdapterFactory;import rx.Observable;/** * Created by lidong on 2016/3/2. */public class ApiManager { private static final String ENDPOINT = "http://v.juhe.cn"; private static final Retrofit sRetrofit = new Retrofit .Builder() .baseUrl(ENDPOINT) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); private static final ApiManagerService apiManager = sRetrofit.create(ApiManagerService.class); /** * 获取天气数据 * @param city * @return */ public static Observable<WeatherData> getWeatherData(String format, String city) { return apiManager.getWeatherData(format,city,"ad1d20bebafe0668502c8eea5ddd0333"); }}package com.lidong.demo.android_rapid_development_of_library.mvp.api;import com.lidong.demo.android_rapid_development_of_library.mvp.bean.WeatherData;import retrofit.http.GET;import retrofit.http.Query;import rx.Observable;/** * @className:ApiManagerService * Created by lidong on 2016/3/2. */public interface ApiManagerService { /** * 获取数据 * @param cityname * @param key * @return */ @GET("/weather/index") Observable<WeatherData> getWeatherData(@Query("format") String format,@Query("cityname") String cityname,@Query("key") String key);}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
bean层的代码
package com.lidong.demo.android_rapid_development_of_library.mvp.bean;import java.util.List;/** * Created by Administrator on 2015/12/21. */public class WeatherData { /** * resultcode : 200 * reason : successed! * result : {"sk":{"temp":"18","wind_direction":"东南风","wind_strength":"2级","humidity":"41%","time":"14:32"},"today":{"temperature":"8℃~17℃","weather":"多云","weather_id":{"fa":"01","fb":"01"},"wind":"东南风3-4 级","week":"星期三","city":"苏州","date_y":"2016年03月02日","dressing_index":"较冷","dressing_advice":"建议着厚外套加毛衣等服装。年老体弱者宜着大衣、呢外套加羊毛衫。","uv_index":"弱","comfort_index":"","wash_index":"较适宜","travel_index":"较适宜","exercise_index":"较适宜","drying_index":""},"future":[{"temperature":"8℃~17℃","weather":"多云","weather_id":{"fa":"01","fb":"01"},"wind":"东南风3-4 级","week":"星期三","date":"20160302"},{"temperature":"11℃~21℃","weather":"多云","weather_id":{"fa":"01","fb":"01"},"wind":"东南风3-4 级","week":"星期四","date":"20160303"},{"temperature":"12℃~19℃","weather":"多云转阴","weather_id":{"fa":"01","fb":"02"},"wind":"东南风3-4 级","week":"星期五","date":"20160304"},{"temperature":"10℃~19℃","weather":"多云","weather_id":{"fa":"01","fb":"01"},"wind":"东北风3-4 级","week":"星期六","date":"20160305"},{"temperature":"11℃~20℃","weather":"多云","weather_id":{"fa":"01","fb":"01"},"wind":"东南风3-4 级","week":"星期日","date":"20160306"},{"temperature":"10℃~19℃","weather":"多云","weather_id":{"fa":"01","fb":"01"},"wind":"东北风3-4 级","week":"星期一","date":"20160307"},{"temperature":"12℃~19℃","weather":"多云转阴","weather_id":{"fa":"01","fb":"02"},"wind":"东南风3-4 级","week":"星期二","date":"20160308"}]} * error_code : 0 */ private String resultcode; private String reason; /** * sk : {"temp":"18","wind_direction":"东南风","wind_strength":"2级","humidity":"41%","time":"14:32"} * today : {"temperature":"8℃~17℃","weather":"多云","weather_id":{"fa":"01","fb":"01"},"wind":"东南风3-4 级","week":"星期三","city":"苏州","date_y":"2016年03月02日","dressing_index":"较冷","dressing_advice":"建议着厚外套加毛衣等服装。年老体弱者宜着大衣、呢外套加羊毛衫。","uv_index":"弱","comfort_index":"","wash_index":"较适宜","travel_index":"较适宜","exercise_index":"较适宜","drying_index":""} * future : [{"temperature":"8℃~17℃","weather":"多云","weather_id":{"fa":"01","fb":"01"},"wind":"东南风3-4 级","week":"星期三","date":"20160302"},{"temperature":"11℃~21℃","weather":"多云","weather_id":{"fa":"01","fb":"01"},"wind":"东南风3-4 级","week":"星期四","date":"20160303"},{"temperature":"12℃~19℃","weather":"多云转阴","weather_id":{"fa":"01","fb":"02"},"wind":"东南风3-4 级","week":"星期五","date":"20160304"},{"temperature":"10℃~19℃","weather":"多云","weather_id":{"fa":"01","fb":"01"},"wind":"东北风3-4 级","week":"星期六","date":"20160305"},{"temperature":"11℃~20℃","weather":"多云","weather_id":{"fa":"01","fb":"01"},"wind":"东南风3-4 级","week":"星期日","date":"20160306"},{"temperature":"10℃~19℃","weather":"多云","weather_id":{"fa":"01","fb":"01"},"wind":"东北风3-4 级","week":"星期一","date":"20160307"},{"temperature":"12℃~19℃","weather":"多云转阴","weather_id":{"fa":"01","fb":"02"},"wind":"东南风3-4 级","week":"星期二","date":"20160308"}] */ private ResultEntity result; private int error_code; public void setResultcode(String resultcode) { this.resultcode = resultcode; } public void setReason(String reason) { this.reason = reason; } public void setResult(ResultEntity result) { this.result = result; } public void setError_code(int error_code) { this.error_code = error_code; } public String getResultcode() { return resultcode; } public String getReason() { return reason; } public ResultEntity getResult() { return result; } public int getError_code() { return error_code; } public static class ResultEntity { /** * temp : 18 * wind_direction : 东南风 * wind_strength : 2级 * humidity : 41% * time : 14:32 */ private SkEntity sk; /** * temperature : 8℃~17℃ * weather : 多云 * weather_id : {"fa":"01","fb":"01"} * wind : 东南风3-4 级 * week : 星期三 * city : 苏州 * date_y : 2016年03月02日 * dressing_index : 较冷 * dressing_advice : 建议着厚外套加毛衣等服装。年老体弱者宜着大衣、呢外套加羊毛衫。 * uv_index : 弱 * comfort_index : * wash_index : 较适宜 * travel_index : 较适宜 * exercise_index : 较适宜 * drying_index : */ private TodayEntity today; /** * temperature : 8℃~17℃ * weather : 多云 * weather_id : {"fa":"01","fb":"01"} * wind : 东南风3-4 级 * week : 星期三 * date : 20160302 */ private List<FutureEntity> future; public void setSk(SkEntity sk) { this.sk = sk; } public void setToday(TodayEntity today) { this.today = today; } public void setFuture(List<FutureEntity> future) { this.future = future; } public SkEntity getSk() { return sk; } public TodayEntity getToday() { return today; } public List<FutureEntity> getFuture() { return future; } public static class SkEntity { private String temp; private String wind_direction; private String wind_strength; private String humidity; private String time; public void setTemp(String temp) { this.temp = temp; } public void setWind_direction(String wind_direction) { this.wind_direction = wind_direction; } public void setWind_strength(String wind_strength) { this.wind_strength = wind_strength; } public void setHumidity(String humidity) { this.humidity = humidity; } public void setTime(String time) { this.time = time; } public String getTemp() { return temp; } public String getWind_direction() { return wind_direction; } public String getWind_strength() { return wind_strength; } public String getHumidity() { return humidity; } public String getTime() { return time; } @Override public String toString() { return "SkEntity{" + "temp='" + temp + '\'' + ", wind_direction='" + wind_direction + '\'' + ", wind_strength='" + wind_strength + '\'' + ", humidity='" + humidity + '\'' + ", time='" + time + '\'' + '}'; } } public static class TodayEntity { @Override public String toString() { return "TodayEntity{" + "temperature='" + temperature + '\'' + ", weather='" + weather + '\'' + ", weather_id=" + weather_id + ", wind='" + wind + '\'' + ", week='" + week + '\'' + ", city='" + city + '\'' + ", date_y='" + date_y + '\'' + ", dressing_index='" + dressing_index + '\'' + ", dressing_advice='" + dressing_advice + '\'' + ", uv_index='" + uv_index + '\'' + ", comfort_index='" + comfort_index + '\'' + ", wash_index='" + wash_index + '\'' + ", travel_index='" + travel_index + '\'' + ", exercise_index='" + exercise_index + '\'' + ", drying_index='" + drying_index + '\'' + '}'; } private String temperature; private String weather; /** * fa : 01 * fb : 01 */ private WeatherIdEntity weather_id; private String wind; private String week; private String city; private String date_y; private String dressing_index; private String dressing_advice; private String uv_index; private String comfort_index; private String wash_index; private String travel_index; private String exercise_index; private String drying_index; public void setTemperature(String temperature) { this.temperature = temperature; } public void setWeather(String weather) { this.weather = weather; } public void setWeather_id(WeatherIdEntity weather_id) { this.weather_id = weather_id; } public void setWind(String wind) { this.wind = wind; } public void setWeek(String week) { this.week = week; } public void setCity(String city) { this.city = city; } public void setDate_y(String date_y) { this.date_y = date_y; } public void setDressing_index(String dressing_index) { this.dressing_index = dressing_index; } public void setDressing_advice(String dressing_advice) { this.dressing_advice = dressing_advice; } public void setUv_index(String uv_index) { this.uv_index = uv_index; } public void setComfort_index(String comfort_index) { this.comfort_index = comfort_index; } public void setWash_index(String wash_index) { this.wash_index = wash_index; } public void setTravel_index(String travel_index) { this.travel_index = travel_index; } public void setExercise_index(String exercise_index) { this.exercise_index = exercise_index; } public void setDrying_index(String drying_index) { this.drying_index = drying_index; } public String getTemperature() { return temperature; } public String getWeather() { return weather; } public WeatherIdEntity getWeather_id() { return weather_id; } public String getWind() { return wind; } public String getWeek() { return week; } public String getCity() { return city; } public String getDate_y() { return date_y; } public String getDressing_index() { return dressing_index; } public String getDressing_advice() { return dressing_advice; } public String getUv_index() { return uv_index; } public String getComfort_index() { return comfort_index; } public String getWash_index() { return wash_index; } public String getTravel_index() { return travel_index; } public String getExercise_index() { return exercise_index; } public String getDrying_index() { return drying_index; } public static class WeatherIdEntity { private String fa; private String fb; public void setFa(String fa) { this.fa = fa; } public void setFb(String fb) { this.fb = fb; } public String getFa() { return fa; } public String getFb() { return fb; } } } public static class FutureEntity { private String temperature; private String weather; /** * fa : 01 * fb : 01 */ private WeatherIdEntity weather_id; private String wind; private String week; private String date; public void setTemperature(String temperature) { this.temperature = temperature; } public void setWeather(String weather) { this.weather = weather; } public void setWeather_id(WeatherIdEntity weather_id) { this.weather_id = weather_id; } public void setWind(String wind) { this.wind = wind; } public void setWeek(String week) { this.week = week; } public void setDate(String date) { this.date = date; } public String getTemperature() { return temperature; } public String getWeather() { return weather; } public WeatherIdEntity getWeather_id() { return weather_id; } public String getWind() { return wind; } public String getWeek() { return week; } public String getDate() { return date; } public static class WeatherIdEntity { private String fa; private String fb; public void setFa(String fa) { this.fa = fa; } public void setFb(String fb) { this.fb = fb; } public String getFa() { return fa; } public String getFb() { return fb; } @Override public String toString() { return "WeatherIdEntity{" + "fa='" + fa + '\'' + ", fb='" + fb + '\'' + '}'; } } @Override public String toString() { return "FutureEntity{" + "temperature='" + temperature + '\'' + ", weather='" + weather + '\'' + ", weather_id=" + weather_id + ", wind='" + wind + '\'' + ", week='" + week + '\'' + ", date='" + date + '\'' + '}'; } } @Override public String toString() { return "ResultEntity{" + "sk=" + sk + ", today=" + today + ", future=" + future + '}'; } } @Override public String toString() { return "WeatherData{" + "resultcode='" + resultcode + '\'' + ", reason='" + reason + '\'' + ", result=" + result + ", error_code=" + error_code + '}'; }}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372
- 373
- 374
- 375
- 376
- 377
- 378
- 379
- 380
- 381
- 382
- 383
- 384
- 385
- 386
- 387
- 388
- 389
- 390
- 391
- 392
- 393
- 394
- 395
- 396
- 397
- 398
- 399
- 400
- 401
- 402
- 403
- 404
- 405
- 406
- 407
- 408
- 409
- 410
- 411
- 412
- 413
- 414
- 415
- 416
- 417
- 418
- 419
- 420
- 421
- 422
- 423
- 424
- 425
- 426
- 427
- 428
- 429
- 430
- 431
- 432
- 433
- 434
- 435
- 436
- 437
- 438
- 439
- 440
- 441
- 442
- 443
- 444
- 445
- 446
- 447
- 448
- 449
- 450
- 451
- 452
- 453
- 454
- 455
- 456
- 457
- 458
- 459
- 460
- 461
- 462
- 463
- 464
- 465
- 466
- 467
- 468
- 469
- 470
- 471
- 472
- 473
- 474
- 475
- 476
- 477
- 478
- 479
- 480
- 481
- 482
- 483
- 484
- 485
- 486
- 487
- 488
- 489
- 490
- 491
- 492
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372
- 373
- 374
- 375
- 376
- 377
- 378
- 379
- 380
- 381
- 382
- 383
- 384
- 385
- 386
- 387
- 388
- 389
- 390
- 391
- 392
- 393
- 394
- 395
- 396
- 397
- 398
- 399
- 400
- 401
- 402
- 403
- 404
- 405
- 406
- 407
- 408
- 409
- 410
- 411
- 412
- 413
- 414
- 415
- 416
- 417
- 418
- 419
- 420
- 421
- 422
- 423
- 424
- 425
- 426
- 427
- 428
- 429
- 430
- 431
- 432
- 433
- 434
- 435
- 436
- 437
- 438
- 439
- 440
- 441
- 442
- 443
- 444
- 445
- 446
- 447
- 448
- 449
- 450
- 451
- 452
- 453
- 454
- 455
- 456
- 457
- 458
- 459
- 460
- 461
- 462
- 463
- 464
- 465
- 466
- 467
- 468
- 469
- 470
- 471
- 472
- 473
- 474
- 475
- 476
- 477
- 478
- 479
- 480
- 481
- 482
- 483
- 484
- 485
- 486
- 487
- 488
- 489
- 490
- 491
- 492
总结
最后总结一下,通过使用mvp对代码进行分层之后,模块化更加的清楚,假如要换网络框架,需要修改model层和api层的代码,其他的层的代码都不需要再动,这样各层之间保持单一职责。代码的易读性变得更强了。
代码:
https://github.com/lidong1665/AndroidRapidLibrary/tree/master/Android-Rapid-Development-Of-Library/app/src/main/java/com/lidong/demo/mvp
代码的运行效果:
转自:http://blog.csdn.net/u010046908/article/details/50781360
0 0