coolWeather (三)
- 创建一个用于解析和处理服务器返回固定格式的数据的工具类。
/**
*解析和处理服务器返回的省级数据
**/
public synchroinized static boolean hanleProvincesResponse(CoolWeatherDB coolWeatherDB, String response){
if(!TextUtils.isEmpty(response)){
String[] allProvinces = response.split(",");
if(allProvinces != null && allProvinces.length > 0){
for(String s: allProvinces){
String[] array = s.split("\\|");
Province province = new Province();
province.setProvinceCode(array[0];
province.setProvinceName(array[1]);
coolWeatherDB.saveProvince(province);
}
return true;
}
}
return false;
}
简单梳理下代码逻辑
- 进入chooseActivity的界面
- 调用queryProvinces()方法
1.调用coolWeatherDB的loadProvinces()方法:获得所有省份的集合
1.如果数据库里有这些数据
1.则先将dataList中的数据清楚,调用dataList.clear()
2.通知adapter数据已经发生改变
3.currentLevel = LEVEL_PROVINCE;
2.如果数据库里没有这些数据
1.调用queryFromServer();从服务器端获取省份信息数据
1.进行地址拼装
2.调用showProgressDialog();显示读取进度
3.调用HttpUtil。sendHttpRequest();
1.开启一个线程用于网络请求操作
2.根据传入的网络地址发起网络请求,通过接口将获得的数据对外提供出去
如果请求成功
1.执行接口的onfinish()方法。
1.根据type类型,决定使用何种方法处理接口提供地数据
1.type类型为province时,调用工具类下的handleProvincesResponse()方法。
1.通过split方法,切割字符串,将数据解析出来,并保存到数据库中去
2.type类型为city时,调用工具类中的handleCitiesResponse()方法。
1.同上
2.如果成功写入数据库中。同过runOnUiTread()方法回到主线成处理逻辑,再次调用queryProvince()。
//显示省份信息逻辑结束
listview实现点击事件
利用currentLevel 来组织业务逻辑