用andtoid studio获取天气数据并解析适配
1、申请拿到数据
可以用“聚合数据”
2、在android studio中导入需要的jar包
复制—>app—>libs—>粘贴—>右击—>Add As Library……—>选择model—>ok
此项目所用的jar包建议:
fastjson
xUtils(访问部分可用异步任务jar包代替)
3、网络权限
<uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
4、获取数据
4-1:携带参数
RequestParams params = new RequestParams(); params.addBodyParameter("key", "你的key值"); params.addBodyParameter("cityname", "城市名");
4-2:获取
1 HttpUtils http = new HttpUtils(); 2 http.send(HttpRequest.HttpMethod.POST, "请求的网址", params, new RequestCallBack<String>() { 3 @Override 4 public void onSuccess(ResponseInfo<String> responseInfo) { 5 String info = responseInfo.result; 6 } 7 8 @Override 9 public void onFailure(HttpException e, String s) { 10 Toast.makeText(MainActivity.this, "网络连接失败", Toast.LENGTH_SHORT).show(); 11 } 12 });
5、解析数据
获取到的数据默认是json数据,用android studio的gsonformat一键生成实体类,再用parcelable序列化它(想要观看效果最佳 ,也可以重写toString方法)
WeatherInfo就是自动生成的实体类
WeatherInfo wea = JSON.parseObject(info, WeatherInfo.class);
String weather = new WeatherInfo();
1 package test.firefly.com.hehe; 2 3 import android.os.Parcel; 4 import android.os.Parcelable; 5 6 import java.util.ArrayList; 7 import java.util.List; 8 9 /** 10 * 作者:pengdan on 2016/5/22. 11 * 邮箱:1984982452@qq.com 12 */ 13 public class WeatherInfo implements Parcelable { 14 @Override 15 public String toString() { 16 return "WeatherInfo{" + 17 "reason='" + reason + '\'' + 18 ", result=" + result + 19 ", error_code=" + error_code + 20 '}'; 21 } 22 23 /** 24 * reason : successed! 25 * result : {"data":{"realtime":{"wind":{"windspeed":"14.0","direct":"北风","power":"2级","offset":null},"time":"19:00:00","weather":{"humidity":"85","img":"2","info":"阴","temperature":"19"},"dataUptime":1463917984,"date":"2016-05-22","city_code":"101250105","city_name":"望城","week":0,"moon":"四月十六"},"life":{"date":"2016-5-22","info":{"kongtiao":["较少开启","您将感到很舒适,一般不需要开启空调。"],"yundong":["较不宜","有降水,推荐您在室内进行健身休闲运动;若坚持户外运动,须注意携带雨具并注意避雨防滑。"],"ziwaixian":["最弱","属弱紫外线辐射天气,无需特别防护。若长期在户外,建议涂擦SPF在8-12之间的防晒护肤品。"],"ganmao":["较易发","天气较凉,较易发生感冒,请适当增加衣服。体质较弱的朋友尤其应该注意防护。"],"xiche":["不宜","不宜洗车,未来24小时内有雨,如果在此期间洗车,雨水和路上的泥水可能会再次弄脏您的爱车。"],"wuran":["良","气象条件有利于空气污染物稀释、扩散和清除,可在室外正常活动。"],"chuanyi":["较舒适","建议着薄外套、开衫牛仔衫裤等服装。年老体弱者应适当添加衣物,宜着夹克衫、薄毛衣等。"]}},"weather":[{"date":"2016-05-22","info":{"night":["2","阴","18","无持续风向","微风","19:16"],"day":["1","多云","23","北风","微风","05:34"]},"week":"日","nongli":"四月十六"},{"date":"2016-05-23","info":{"dawn":["2","阴","18","无持续风向","微风","19:16"],"night":["2","阴","17","无持续风向","微风","19:16"],"day":["3","阵雨","22","西北风","微风","05:34"]},"week":"一","nongli":"四月十七"},{"date":"2016-05-24","info":{"dawn":["2","阴","17","无持续风向","微风","19:16"],"night":["1","多云","19","南风","微风","19:17"],"day":["1","多云","27","无持续风向","微风","05:33"]},"week":"二","nongli":"四月十八"},{"date":"2016-05-25","info":{"dawn":["1","多云","19","南风","微风","19:17"],"night":["8","中雨","20","南风","微风","19:17"],"day":["3","阵雨","27","南风","微风","05:33"]},"week":"三","nongli":"四月十九"},{"date":"2016-05-26","info":{"dawn":["8","中雨","20","南风","微风","19:17"],"night":["7","小雨","18","北风","3-4 级","19:18"],"day":["8","中雨","25","北风","3-4 级","05:33"]},"week":"四","nongli":"四月二十"},{"date":"2016-05-27","info":{"night":["3","阵雨","16","西北风","微风","19:30"],"day":["3","阵雨","20","西北风","微风","07:30"]},"week":"五","nongli":"四月廿一"},{"date":"2016-05-28","info":{"night":["1","多云","17","西北风","微风","19:30"],"day":["3","阵雨","23","西北风","微风","07:30"]},"week":"六","nongli":"四月廿二"}],"pm25":{"key":"","show_desc":0,"pm25":{"curPm":"","pm25":"","pm10":"","level":null,"quality":null,"des":null},"dateTime":"2016年05月22日19时","cityName":"望城"},"date":null,"isForeign":0}} 26 * error_code : 0 27 */ 28 29 private String reason; 30 /** 31 * data : {"realtime":{"wind":{"windspeed":"14.0","direct":"北风","power":"2级","offset":null},"time":"19:00:00","weather":{"humidity":"85","img":"2","info":"阴","temperature":"19"},"dataUptime":1463917984,"date":"2016-05-22","city_code":"101250105","city_name":"望城","week":0,"moon":"四月十六"},"life":{"date":"2016-5-22","info":{"kongtiao":["较少开启","您将感到很舒适,一般不需要开启空调。"],"yundong":["较不宜","有降水,推荐您在室内进行健身休闲运动;若坚持户外运动,须注意携带雨具并注意避雨防滑。"],"ziwaixian":["最弱","属弱紫外线辐射天气,无需特别防护。若长期在户外,建议涂擦SPF在8-12之间的防晒护肤品。"],"ganmao":["较易发","天气较凉,较易发生感冒,请适当增加衣服。体质较弱的朋友尤其应该注意防护。"],"xiche":["不宜","不宜洗车,未来24小时内有雨,如果在此期间洗车,雨水和路上的泥水可能会再次弄脏您的爱车。"],"wuran":["良","气象条件有利于空气污染物稀释、扩散和清除,可在室外正常活动。"],"chuanyi":["较舒适","建议着薄外套、开衫牛仔衫裤等服装。年老体弱者应适当添加衣物,宜着夹克衫、薄毛衣等。"]}},"weather":[{"date":"2016-05-22","info":{"night":["2","阴","18","无持续风向","微风","19:16"],"day":["1","多云","23","北风","微风","05:34"]},"week":"日","nongli":"四月十六"},{"date":"2016-05-23","info":{"dawn":["2","阴","18","无持续风向","微风","19:16"],"night":["2","阴","17","无持续风向","微风","19:16"],"day":["3","阵雨","22","西北风","微风","05:34"]},"week":"一","nongli":"四月十七"},{"date":"2016-05-24","info":{"dawn":["2","阴","17","无持续风向","微风","19:16"],"night":["1","多云","19","南风","微风","19:17"],"day":["1","多云","27","无持续风向","微风","05:33"]},"week":"二","nongli":"四月十八"},{"date":"2016-05-25","info":{"dawn":["1","多云","19","南风","微风","19:17"],"night":["8","中雨","20","南风","微风","19:17"],"day":["3","阵雨","27","南风","微风","05:33"]},"week":"三","nongli":"四月十九"},{"date":"2016-05-26","info":{"dawn":["8","中雨","20","南风","微风","19:17"],"night":["7","小雨","18","北风","3-4 级","19:18"],"day":["8","中雨","25","北风","3-4 级","05:33"]},"week":"四","nongli":"四月二十"},{"date":"2016-05-27","info":{"night":["3","阵雨","16","西北风","微风","19:30"],"day":["3","阵雨","20","西北风","微风","07:30"]},"week":"五","nongli":"四月廿一"},{"date":"2016-05-28","info":{"night":["1","多云","17","西北风","微风","19:30"],"day":["3","阵雨","23","西北风","微风","07:30"]},"week":"六","nongli":"四月廿二"}],"pm25":{"key":"","show_desc":0,"pm25":{"curPm":"","pm25":"","pm10":"","level":null,"quality":null,"des":null},"dateTime":"2016年05月22日19时","cityName":"望城"},"date":null,"isForeign":0} 32 */ 33 34 private ResultBean result; 35 private int error_code; 36 37 public String getReason() { 38 return reason; 39 } 40 41 public void setReason(String reason) { 42 this.reason = reason; 43 } 44 45 public ResultBean getResult() { 46 return result; 47 } 48 49 public void setResult(ResultBean result) { 50 this.result = result; 51 } 52 53 public int getError_code() { 54 return error_code; 55 } 56 57 public void setError_code(int error_code) { 58 this.error_code = error_code; 59 } 60 61 public static class ResultBean implements Parcelable { 62 @Override 63 public String toString() { 64 return "ResultBean{" + 65 "data=" + data + 66 '}'; 67 } 68 69 /** 70 * realtime : {"wind":{"windspeed":"14.0","direct":"北风","power":"2级","offset":null},"time":"19:00:00","weather":{"humidity":"85","img":"2","info":"阴","temperature":"19"},"dataUptime":1463917984,"date":"2016-05-22","city_code":"101250105","city_name":"望城","week":0,"moon":"四月十六"} 71 * life : {"date":"2016-5-22","info":{"kongtiao":["较少开启","您将感到很舒适,一般不需要开启空调。"],"yundong":["较不宜","有降水,推荐您在室内进行健身休闲运动;若坚持户外运动,须注意携带雨具并注意避雨防滑。"],"ziwaixian":["最弱","属弱紫外线辐射天气,无需特别防护。若长期在户外,建议涂擦SPF在8-12之间的防晒护肤品。"],"ganmao":["较易发","天气较凉,较易发生感冒,请适当增加衣服。体质较弱的朋友尤其应该注意防护。"],"xiche":["不宜","不宜洗车,未来24小时内有雨,如果在此期间洗车,雨水和路上的泥水可能会再次弄脏您的爱车。"],"wuran":["良","气象条件有利于空气污染物稀释、扩散和清除,可在室外正常活动。"],"chuanyi":["较舒适","建议着薄外套、开衫牛仔衫裤等服装。年老体弱者应适当添加衣物,宜着夹克衫、薄毛衣等。"]}} 72 * weather : [{"date":"2016-05-22","info":{"night":["2","阴","18","无持续风向","微风","19:16"],"day":["1","多云","23","北风","微风","05:34"]},"week":"日","nongli":"四月十六"},{"date":"2016-05-23","info":{"dawn":["2","阴","18","无持续风向","微风","19:16"],"night":["2","阴","17","无持续风向","微风","19:16"],"day":["3","阵雨","22","西北风","微风","05:34"]},"week":"一","nongli":"四月十七"},{"date":"2016-05-24","info":{"dawn":["2","阴","17","无持续风向","微风","19:16"],"night":["1","多云","19","南风","微风","19:17"],"day":["1","多云","27","无持续风向","微风","05:33"]},"week":"二","nongli":"四月十八"},{"date":"2016-05-25","info":{"dawn":["1","多云","19","南风","微风","19:17"],"night":["8","中雨","20","南风","微风","19:17"],"day":["3","阵雨","27","南风","微风","05:33"]},"week":"三","nongli":"四月十九"},{"date":"2016-05-26","info":{"dawn":["8","中雨","20","南风","微风","19:17"],"night":["7","小雨","18","北风","3-4 级","19:18"],"day":["8","中雨","25","北风","3-4 级","05:33"]},"week":"四","nongli":"四月二十"},{"date":"2016-05-27","info":{"night":["3","阵雨","16","西北风","微风","19:30"],"day":["3","阵雨","20","西北风","微风","07:30"]},"week":"五","nongli":"四月廿一"},{"date":"2016-05-28","info":{"night":["1","多云","17","西北风","微风","19:30"],"day":["3","阵雨","23","西北风","微风","07:30"]},"week":"六","nongli":"四月廿二"}] 73 * pm25 : {"key":"","show_desc":0,"pm25":{"curPm":"","pm25":"","pm10":"","level":null,"quality":null,"des":null},"dateTime":"2016年05月22日19时","cityName":"望城"} 74 * date : null 75 * isForeign : 0 76 */ 77 78 private DataBean data; 79 80 public DataBean getData() { 81 return data; 82 } 83 84 public void setData(DataBean data) { 85 this.data = data; 86 } 87 88 public static class DataBean implements Parcelable { 89 @Override 90 public String toString() { 91 return "DataBean{" + 92 "realtime=" + realtime + 93 ", life=" + life + 94 ", date=" + date + 95 ", isForeign=" + isForeign + 96 ", weather=" + weather + 97 '}'; 98 } 99 100 /** 101 * wind : {"windspeed":"14.0","direct":"北风","power":"2级","offset":null} 102 * time : 19:00:00 103 * weather : {"humidity":"85","img":"2","info":"阴","temperature":"19"} 104 * dataUptime : 1463917984 105 * date : 2016-05-22 106 * city_code : 101250105 107 * city_name : 望城 108 * week : 0 109 * moon : 四月十六 110 */ 111 112 private RealtimeBean realtime; 113 /** 114 * date : 2016-5-22 115 * info : {"kongtiao":["较少开启","您将感到很舒适,一般不需要开启空调。"],"yundong":["较不宜","有降水,推荐您在室内进行健身休闲运动;若坚持户外运动,须注意携带雨具并注意避雨防滑。"],"ziwaixian":["最弱","属弱紫外线辐射天气,无需特别防护。若长期在户外,建议涂擦SPF在8-12之间的防晒护肤品。"],"ganmao":["较易发","天气较凉,较易发生感冒,请适当增加衣服。体质较弱的朋友尤其应该注意防护。"],"xiche":["不宜","不宜洗车,未来24小时内有雨,如果在此期间洗车,雨水和路上的泥水可能会再次弄脏您的爱车。"],"wuran":["良","气象条件有利于空气污染物稀释、扩散和清除,可在室外正常活动。"],"chuanyi":["较舒适","建议着薄外套、开衫牛仔衫裤等服装。年老体弱者应适当添加衣物,宜着夹克衫、薄毛衣等。"]} 116 */ 117 118 private LifeBean life; 119 private Object date; 120 private int isForeign; 121 /** 122 * date : 2016-05-22 123 * info : {"night":["2","阴","18","无持续风向","微风","19:16"],"day":["1","多云","23","北风","微风","05:34"]} 124 * week : 日 125 * nongli : 四月十六 126 */ 127 128 private List<WeatherBean> weather; 129 130 public RealtimeBean getRealtime() { 131 return realtime; 132 } 133 134 public void setRealtime(RealtimeBean realtime) { 135 this.realtime = realtime; 136 } 137 138 public LifeBean getLife() { 139 return life; 140 } 141 142 public void setLife(LifeBean life) { 143 this.life = life; 144 } 145 146 public Object getDate() { 147 return date; 148 } 149 150 public void setDate(Object date) { 151 this.date = date; 152 } 153 154 public int getIsForeign() { 155 return isForeign; 156 } 157 158 public void setIsForeign(int isForeign) { 159 this.isForeign = isForeign; 160 } 161 162 public List<WeatherBean> getWeather() { 163 return weather; 164 } 165 166 public void setWeather(List<WeatherBean> weather) { 167 this.weather = weather; 168 } 169 170 public static class RealtimeBean implements Parcelable { 171 @Override 172 public String toString() { 173 return "RealtimeBean{" + 174 "wind=" + wind + 175 ", time='" + time + '\'' + 176 ", weather=" + weather + 177 ", dataUptime=" + dataUptime + 178 ", date='" + date + '\'' + 179 ", city_code='" + city_code + '\'' + 180 ", city_name='" + city_name + '\'' + 181 ", week=" + week + 182 ", moon='" + moon + '\'' + 183 '}'; 184 } 185 186 /** 187 * windspeed : 14.0 188 * direct : 北风 189 * power : 2级 190 * offset : null 191 */ 192 193 private WindBean wind; 194 private String time; 195 /** 196 * humidity : 85 197 * img : 2 198 * info : 阴 199 * temperature : 19 200 */ 201 202 private WeatherBean weather; 203 private int dataUptime; 204 private String date; 205 private String city_code; 206 private String city_name; 207 private int week; 208 private String moon; 209 210 public WindBean getWind() { 211 return wind; 212 } 213 214 public void setWind(WindBean wind) { 215 this.wind = wind; 216 } 217 218 public String getTime() { 219 return time; 220 } 221 222 public void setTime(String time) { 223 this.time = time; 224 } 225 226 public WeatherBean getWeather() { 227 return weather; 228 } 229 230 public void setWeather(WeatherBean weather) { 231 this.weather = weather; 232 } 233 234 public int getDataUptime() { 235 return dataUptime; 236 } 237 238 public void setDataUptime(int dataUptime) { 239 this.dataUptime = dataUptime; 240 } 241 242 public String getDate() { 243 return date; 244 } 245 246 public void setDate(String date) { 247 this.date = date; 248 } 249 250 public String getCity_code() { 251 return city_code; 252 } 253 254 public void setCity_code(String city_code) { 255 this.city_code = city_code; 256 } 257 258 public String getCity_name() { 259 return city_name; 260 } 261 262 public void setCity_name(String city_name) { 263 this.city_name = city_name; 264 } 265 266 public int getWeek() { 267 return week; 268 } 269 270 public void setWeek(int week) { 271 this.week = week; 272 } 273 274 public String getMoon() { 275 return moon; 276 } 277 278 public void setMoon(String moon) { 279 this.moon = moon; 280 } 281 282 public static class WindBean implements Parcelable { 283 @Override 284 public String toString() { 285 return "WindBean{" + 286 "windspeed='" + windspeed + '\'' + 287 ", direct='" + direct + '\'' + 288 ", power='" + power + '\'' + 289 ", offset=" + offset + 290 '}'; 291 } 292 293 private String windspeed; 294 private String direct; 295 private String power; 296 private Object offset; 297 298 public String getWindspeed() { 299 return windspeed; 300 } 301 302 public void setWindspeed(String windspeed) { 303 this.windspeed = windspeed; 304 } 305 306 public String getDirect() { 307 return direct; 308 } 309 310 public void setDirect(String direct) { 311 this.direct = direct; 312 } 313 314 public String getPower() { 315 return power; 316 } 317 318 public void setPower(String power) { 319 this.power = power; 320 } 321 322 public Object getOffset() { 323 return offset; 324 } 325 326 public void setOffset(Object offset) { 327 this.offset = offset; 328 } 329 330 @Override 331 public int describeContents() { 332 return 0; 333 } 334 335 @Override 336 public void writeToParcel(Parcel dest, int flags) { 337 dest.writeString(this.windspeed); 338 dest.writeString(this.direct); 339 dest.writeString(this.power); 340 dest.writeParcelable((Parcelable) this.offset, flags); 341 } 342 343 public WindBean() { 344 } 345 346 protected WindBean(Parcel in) { 347 this.windspeed = in.readString(); 348 this.direct = in.readString(); 349 this.power = in.readString(); 350 this.offset = in.readParcelable(Object.class.getClassLoader()); 351 } 352 353 public static final Creator<WindBean> CREATOR = new Creator<WindBean>() { 354 @Override 355 public WindBean createFromParcel(Parcel source) { 356 return new WindBean(source); 357 } 358 359 @Override 360 public WindBean[] newArray(int size) { 361 return new WindBean[size]; 362 } 363 }; 364 } 365 366 public static class WeatherBean implements Parcelable { 367 @Override 368 public String toString() { 369 return "WeatherBean{" + 370 "humidity='" + humidity + '\'' + 371 ", img='" + img + '\'' + 372 ", info='" + info + '\'' + 373 ", temperature='" + temperature + '\'' + 374 '}'; 375 } 376 377 private String humidity; 378 private String img; 379 private String info; 380 private String temperature; 381 382 public String getHumidity() { 383 return humidity; 384 } 385 386 public void setHumidity(String humidity) { 387 this.humidity = humidity; 388 } 389 390 public String getImg() { 391 return img; 392 } 393 394 public void setImg(String img) { 395 this.img = img; 396 } 397 398 public String getInfo() { 399 return info; 400 } 401 402 public void setInfo(String info) { 403 this.info = info; 404 } 405 406 public String getTemperature() { 407 return temperature; 408 } 409 410 public void setTemperature(String temperature) { 411 this.temperature = temperature; 412 } 413 414 @Override 415 public int describeContents() { 416 return 0; 417 } 418 419 @Override 420 public void writeToParcel(Parcel dest, int flags) { 421 dest.writeString(this.humidity); 422 dest.writeString(this.img); 423 dest.writeString(this.info); 424 dest.writeString(this.temperature); 425 } 426 427 public WeatherBean() { 428 } 429 430 protected WeatherBean(Parcel in) { 431 this.humidity = in.readString(); 432 this.img = in.readString(); 433 this.info = in.readString(); 434 this.temperature = in.readString(); 435 } 436 437 public static final Creator<WeatherBean> CREATOR = new Creator<WeatherBean>() { 438 @Override 439 public WeatherBean createFromParcel(Parcel source) { 440 return new WeatherBean(source); 441 } 442 443 @Override 444 public WeatherBean[] newArray(int size) { 445 return new WeatherBean[size]; 446 } 447 }; 448 } 449 450 public RealtimeBean() { 451 } 452 453 @Override 454 public int describeContents() { 455 return 0; 456 } 457 458 @Override 459 public void writeToParcel(Parcel dest, int flags) { 460 dest.writeParcelable(this.wind, flags); 461 dest.writeString(this.time); 462 dest.writeParcelable(this.weather, flags); 463 dest.writeInt(this.dataUptime); 464 dest.writeString(this.date); 465 dest.writeString(this.city_code); 466 dest.writeString(this.city_name); 467 dest.writeInt(this.week); 468 dest.writeString(this.moon); 469 } 470 471 protected RealtimeBean(Parcel in) { 472 this.wind = in.readParcelable(WindBean.class.getClassLoader()); 473 this.time = in.readString(); 474 this.weather = in.readParcelable(WeatherBean.class.getClassLoader()); 475 this.dataUptime = in.readInt(); 476 this.date = in.readString(); 477 this.city_code = in.readString(); 478 this.city_name = in.readString(); 479 this.week = in.readInt(); 480 this.moon = in.readString(); 481 } 482 483 public static final Creator<RealtimeBean> CREATOR = new Creator<RealtimeBean>() { 484 @Override 485 public RealtimeBean createFromParcel(Parcel source) { 486 return new RealtimeBean(source); 487 } 488 489 @Override 490 public RealtimeBean[] newArray(int size) { 491 return new RealtimeBean[size]; 492 } 493 }; 494 } 495 496 public static class LifeBean implements Parcelable { 497 @Override 498 public String toString() { 499 return "LifeBean{" + 500 "date='" + date + '\'' + 501 ", info=" + info + 502 '}'; 503 } 504 505 private String date; 506 private InfoBean info; 507 508 public String getDate() { 509 return date; 510 } 511 512 public void setDate(String date) { 513 this.date = date; 514 } 515 516 public InfoBean getInfo() { 517 return info; 518 } 519 520 public void setInfo(InfoBean info) { 521 this.info = info; 522 } 523 524 public static class InfoBean implements Parcelable { 525 @Override 526 public String toString() { 527 return "InfoBean{" + 528 "kongtiao=" + kongtiao + 529 ", yundong=" + yundong + 530 ", ziwaixian=" + ziwaixian + 531 ", ganmao=" + ganmao + 532 ", xiche=" + xiche + 533 ", wuran=" + wuran + 534 ", chuanyi=" + chuanyi + 535 '}'; 536 } 537 538 private List<String> kongtiao; 539 private List<String> yundong; 540 private List<String> ziwaixian; 541 private List<String> ganmao; 542 private List<String> xiche; 543 private List<String> wuran; 544 private List<String> chuanyi; 545 546 public List<String> getKongtiao() { 547 return kongtiao; 548 } 549 550 public void setKongtiao(List<String> kongtiao) { 551 this.kongtiao = kongtiao; 552 } 553 554 public List<String> getYundong() { 555 return yundong; 556 } 557 558 public void setYundong(List<String> yundong) { 559 this.yundong = yundong; 560 } 561 562 public List<String> getZiwaixian() { 563 return ziwaixian; 564 } 565 566 public void setZiwaixian(List<String> ziwaixian) { 567 this.ziwaixian = ziwaixian; 568 } 569 570 public List<String> getGanmao() { 571 return ganmao; 572 } 573 574 public void setGanmao(List<String> ganmao) { 575 this.ganmao = ganmao; 576 } 577 578 public List<String> getXiche() { 579 return xiche; 580 } 581 582 public void setXiche(List<String> xiche) { 583 this.xiche = xiche; 584 } 585 586 public List<String> getWuran() { 587 return wuran; 588 } 589 590 public void setWuran(List<String> wuran) { 591 this.wuran = wuran; 592 } 593 594 public List<String> getChuanyi() { 595 return chuanyi; 596 } 597 598 public void setChuanyi(List<String> chuanyi) { 599 this.chuanyi = chuanyi; 600 } 601 602 @Override 603 public int describeContents() { 604 return 0; 605 } 606 607 @Override 608 public void writeToParcel(Parcel dest, int flags) { 609 dest.writeStringList(this.kongtiao); 610 dest.writeStringList(this.yundong); 611 dest.writeStringList(this.ziwaixian); 612 dest.writeStringList(this.ganmao); 613 dest.writeStringList(this.xiche); 614 dest.writeStringList(this.wuran); 615 dest.writeStringList(this.chuanyi); 616 } 617 618 public InfoBean() { 619 } 620 621 protected InfoBean(Parcel in) { 622 this.kongtiao = in.createStringArrayList(); 623 this.yundong = in.createStringArrayList(); 624 this.ziwaixian = in.createStringArrayList(); 625 this.ganmao = in.createStringArrayList(); 626 this.xiche = in.createStringArrayList(); 627 this.wuran = in.createStringArrayList(); 628 this.chuanyi = in.createStringArrayList(); 629 } 630 631 public static final Creator<InfoBean> CREATOR = new Creator<InfoBean>() { 632 @Override 633 public InfoBean createFromParcel(Parcel source) { 634 return new InfoBean(source); 635 } 636 637 @Override 638 public InfoBean[] newArray(int size) { 639 return new InfoBean[size]; 640 } 641 }; 642 } 643 644 @Override 645 public int describeContents() { 646 return 0; 647 } 648 649 @Override 650 public void writeToParcel(Parcel dest, int flags) { 651 dest.writeString(this.date); 652 dest.writeParcelable(this.info, flags); 653 } 654 655 public LifeBean() { 656 } 657 658 protected LifeBean(Parcel in) { 659 this.date = in.readString(); 660 this.info = in.readParcelable(InfoBean.class.getClassLoader()); 661 } 662 663 public static final Creator<LifeBean> CREATOR = new Creator<LifeBean>() { 664 @Override 665 public LifeBean createFromParcel(Parcel source) { 666 return new LifeBean(source); 667 } 668 669 @Override 670 public LifeBean[] newArray(int size) { 671 return new LifeBean[size]; 672 } 673 }; 674 } 675 676 public static class WeatherBean implements Parcelable { 677 @Override 678 public String toString() { 679 return "WeatherBean{" + 680 "date='" + date + '\'' + 681 ", info=" + info + 682 ", week='" + week + '\'' + 683 ", nongli='" + nongli + '\'' + 684 '}'; 685 } 686 687 private String date;//几月几日 688 private InfoBean info;//信息 689 private String week;//星期几 690 private String nongli;//农历 691 692 public String getDate() { 693 return date; 694 } 695 696 public void setDate(String date) { 697 this.date = date; 698 } 699 700 public InfoBean getInfo() { 701 return info; 702 } 703 704 public void setInfo(InfoBean info) { 705 this.info = info; 706 } 707 708 public String getWeek() { 709 return week; 710 } 711 712 public void setWeek(String week) { 713 this.week = week; 714 } 715 716 public String getNongli() { 717 return nongli; 718 } 719 720 public void setNongli(String nongli) { 721 this.nongli = nongli; 722 } 723 724 public static class InfoBean implements Parcelable { 725 @Override 726 public String toString() { 727 return "InfoBean{" + 728 "night=" + night + 729 ", day=" + day + 730 '}'; 731 } 732 733 private List<String> night; 734 private List<String> day; 735 736 public List<String> getNight() { 737 return night; 738 } 739 740 public void setNight(List<String> night) { 741 this.night = night; 742 } 743 744 public List<String> getDay() { 745 return day; 746 } 747 748 public void setDay(List<String> day) { 749 this.day = day; 750 } 751 752 @Override 753 public int describeContents() { 754 return 0; 755 } 756 757 @Override 758 public void writeToParcel(Parcel dest, int flags) { 759 dest.writeStringList(this.night); 760 dest.writeStringList(this.day); 761 } 762 763 public InfoBean() { 764 } 765 766 protected InfoBean(Parcel in) { 767 this.night = in.createStringArrayList(); 768 this.day = in.createStringArrayList(); 769 } 770 771 public static final Creator<InfoBean> CREATOR = new Creator<InfoBean>() { 772 @Override 773 public InfoBean createFromParcel(Parcel source) { 774 return new InfoBean(source); 775 } 776 777 @Override 778 public InfoBean[] newArray(int size) { 779 return new InfoBean[size]; 780 } 781 }; 782 } 783 784 @Override 785 public int describeContents() { 786 return 0; 787 } 788 789 @Override 790 public void writeToParcel(Parcel dest, int flags) { 791 dest.writeString(this.date); 792 dest.writeParcelable((Parcelable) this.info, flags); 793 dest.writeString(this.week); 794 dest.writeString(this.nongli); 795 } 796 797 public WeatherBean() { 798 } 799 800 protected WeatherBean(Parcel in) { 801 this.date = in.readString(); 802 this.info = in.readParcelable(InfoBean.class.getClassLoader()); 803 this.week = in.readString(); 804 this.nongli = in.readString(); 805 } 806 807 public static final Creator<WeatherBean> CREATOR = new Creator<WeatherBean>() { 808 @Override 809 public WeatherBean createFromParcel(Parcel source) { 810 return new WeatherBean(source); 811 } 812 813 @Override 814 public WeatherBean[] newArray(int size) { 815 return new WeatherBean[size]; 816 } 817 }; 818 } 819 820 public DataBean() { 821 } 822 823 @Override 824 public int describeContents() { 825 return 0; 826 } 827 828 @Override 829 public void writeToParcel(Parcel dest, int flags) { 830 dest.writeParcelable(this.realtime, flags); 831 dest.writeParcelable(this.life, flags); 832 dest.writeParcelable((Parcelable) this.date, flags); 833 dest.writeInt(this.isForeign); 834 dest.writeList(this.weather); 835 } 836 837 protected DataBean(Parcel in) { 838 this.realtime = in.readParcelable(RealtimeBean.class.getClassLoader()); 839 this.life = in.readParcelable(LifeBean.class.getClassLoader()); 840 this.date = in.readParcelable(Object.class.getClassLoader()); 841 this.isForeign = in.readInt(); 842 this.weather = new ArrayList<WeatherBean>(); 843 in.readList(this.weather, WeatherBean.class.getClassLoader()); 844 } 845 846 public static final Creator<DataBean> CREATOR = new Creator<DataBean>() { 847 @Override 848 public DataBean createFromParcel(Parcel source) { 849 return new DataBean(source); 850 } 851 852 @Override 853 public DataBean[] newArray(int size) { 854 return new DataBean[size]; 855 } 856 }; 857 } 858 859 public ResultBean() { 860 } 861 862 @Override 863 public int describeContents() { 864 return 0; 865 } 866 867 @Override 868 public void writeToParcel(Parcel dest, int flags) { 869 dest.writeParcelable(this.data, flags); 870 } 871 872 protected ResultBean(Parcel in) { 873 this.data = in.readParcelable(DataBean.class.getClassLoader()); 874 } 875 876 public static final Creator<ResultBean> CREATOR = new Creator<ResultBean>() { 877 @Override 878 public ResultBean createFromParcel(Parcel source) { 879 return new ResultBean(source); 880 } 881 882 @Override 883 public ResultBean[] newArray(int size) { 884 return new ResultBean[size]; 885 } 886 }; 887 } 888 889 public WeatherInfo() { 890 } 891 892 @Override 893 public int describeContents() { 894 return 0; 895 } 896 897 @Override 898 public void writeToParcel(Parcel dest, int flags) { 899 dest.writeString(this.reason); 900 dest.writeParcelable(this.result, flags); 901 dest.writeInt(this.error_code); 902 } 903 904 protected WeatherInfo(Parcel in) { 905 this.reason = in.readString(); 906 this.result = in.readParcelable(ResultBean.class.getClassLoader()); 907 this.error_code = in.readInt(); 908 } 909 910 public static final Creator<WeatherInfo> CREATOR = new Creator<WeatherInfo>() { 911 @Override 912 public WeatherInfo createFromParcel(Parcel source) { 913 return new WeatherInfo(source); 914 } 915 916 @Override 917 public WeatherInfo[] newArray(int size) { 918 return new WeatherInfo[size]; 919 } 920 }; 921 }
6、适配数据
新建一个Adapter,用ViewHolder优化它
新建item_layout,给数据一个模板
1 package test.firefly.com.hehe; 2 3 import android.content.Context; 4 import android.view.LayoutInflater; 5 import android.view.View; 6 import android.view.ViewGroup; 7 import android.widget.BaseAdapter; 8 import android.widget.TextView; 9 10 import java.util.List; 11 12 /** 13 * 作者:pengdan on 2016/5/23. 14 * 邮箱:1984982452@qq.com 15 */ 16 public class WeatherAdaper extends BaseAdapter { 17 18 private List<WeatherInfo.ResultBean.DataBean.WeatherBean> list; 19 20 private Context ctx; 21 22 private LayoutInflater mInflater; 23 24 25 public WeatherAdaper(Context context, List<WeatherInfo.ResultBean.DataBean.WeatherBean> list) { 26 ctx = context; 27 this.list = list; 28 mInflater = LayoutInflater.from(context); 29 } 30 31 @Override 32 public int getCount() { 33 return list.size(); 34 } 35 36 @Override 37 public Object getItem(int position) { 38 return list.get(position); 39 } 40 41 @Override 42 public long getItemId(int position) { 43 return position; 44 } 45 46 @Override 47 public View getView(int position, View convertView, ViewGroup parent) { 48 49 WeatherInfo.ResultBean.DataBean.WeatherBean entity = list.get(position); 50 51 ViewHolder viewHolder = null; 52 if (convertView == null) { 53 convertView = mInflater.inflate( R.layout.item_weather, null); 54 55 viewHolder = new ViewHolder(); 56 viewHolder.tv_name = (TextView) convertView 57 .findViewById(R.id.tv_name); 58 viewHolder.tv_temp = (TextView) convertView 59 .findViewById(R.id.tv_temp); 60 viewHolder.tv_day = (TextView) convertView 61 .findViewById(R.id.tv_day); 62 viewHolder.tv_date = (TextView) convertView 63 .findViewById(R.id.tv_date); 64 convertView.setTag(viewHolder); 65 } else { 66 viewHolder = (ViewHolder) convertView.getTag(); 67 } 68 69 viewHolder.tv_name.setText(entity.getInfo().getDay().get(1)); 70 viewHolder.tv_temp.setText(entity.getInfo().getDay().get(2)+"℃"); 71 viewHolder.tv_day.setText("星期"+entity.getWeek()); 72 viewHolder.tv_date.setText(entity.getDate()); 73 return convertView; 74 } 75 76 77 static class ViewHolder { 78 public TextView tv_date; 79 public TextView tv_name; 80 public TextView tv_temp; 81 public TextView tv_day; 82 } 83 84 }
7、在Activity中使用它
1 list= wea.getResult().getData().getWeather(); 2 adapter = new WeatherAdaper(MainActivity.this, list); 3 lv.setAdapter(adapter);
文件下载链接:http://pan.baidu.com/s/1o7QcrP4
种一棵树最早的时间是十年前,其次是现在。