酷欧天气开发笔记3:显示天气信息

首先来创建布局文件,先思考布局文件中需要放置哪些控件,这就要由服务器返回的天气数据来决定。

{"weatherinfo":
{"city":"昆山","cityid":"101190404","temp1":"21℃","temp2":"9℃",
"weather":"多云转小雨","img1":"d1.gif","img2":"n7.gif","ptime":"11:00"}
}
cityid 是用户无需知晓的,img1 img2 我们不准备使用,需要显示的  城市名、温度范围、天气信息描述、发布时间

新建 weather_layout.xml
















 
    Utility 类中添加几个方法,用于解析和处理服务返回的  JSON 数据 
  
public class Utility {
……
/**
* 解析服务器返回的JSON数据,并将解析出的数据存储到本地。
*/
public static void handleWeatherResponse(Context context, String response) {
try {
JSONObject jsonObject = new JSONObject(response);
JSONObject weatherInfo = jsonObject.getJSONObject("weatherinfo");
String cityName = weatherInfo.getString("city");
String weatherCode = weatherInfo.getString("cityid");
String temp1 = weatherInfo.getString("temp1");
String temp2 = weatherInfo.getString("temp2");
String weatherDesp = weatherInfo.getString("weather");
String publishTime = weatherInfo.getString("ptime");
saveWeatherInfo(context, cityName, weatherCode, temp1, temp2,
weatherDesp, publishTime);
} catch (JSONException e) {
e.printStackTrace();
}
}
/**
* 将服务器返回的所有天气信息存储到SharedPreferences文件中。
*/
public static void saveWeatherInfo(Context context, String cityName,
String weatherCode, String temp1, String temp2, String weatherDesp, String
publishTime) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年M月d日",
Locale.CHINA);
SharedPreferences.Editor editor = PreferenceManager
.getDefaultSharedPreferences(context).edit();
editor.putBoolean("city_selected", true);
editor.putString("city_name", cityName);
editor.putString("weather_code", weatherCode);
editor.putString("temp1", temp1);
editor.putString("temp2", temp2);
editor.putString("weather_desp", weatherDesp);
editor.putString("publish_time", publishTime);
editor.putString("current_date", sdf.format(new Date()));
editor.commit();
}
}

handleWeatherResponse()方法用于将 JSON 格式的天气信息全部解析出来,saveWeatherInfo()方法用于将这些数据都存储到 SharedPreferences 文件中。






你可能感兴趣的:(酷欧天气开发笔记3:显示天气信息)