一 实验现象(未达到效果,不知道哪出问题了)
logCat出现的提示问题
二 实验部分代码
weatheractivity
public class WeatherActivity extends Activity {
private EditText etCity;
private ImageButton bthQuery;
private ListView lvFutureWeather;
public static final int SHOW_RESPONSE = 1;
private List<Weather>data;
private Handler handler =new Handler(){
public void handleMessage(Message msg){
switch(msg.what){
case SHOW_RESPONSE:
String response =(String) msg.obj;
if(response!=null){
parseWithJSON(response);
WeatherAdapter weatherAdapter = new WeatherAdapter(
WeatherActivity.this,
R.layout.activity_weather_listitem,data);
lvFutureWeather.setAdapter(weatherAdapter);
ScaleAnimation scaleAnimation = new ScaleAnimation(0,1,0,1);
scaleAnimation.setDuration(1000);
LayoutAnimationController animationController = new LayoutAnimationController(scaleAnimation, 0.6f);
lvFutureWeather.setLayoutAnimation(animationController);
}
default:
break;
}
}
private void parseWithJSON(String response){
data = new ArrayList<Weather>();
JsonParser parser=new JsonParser();//json解析器
JsonObject obj=(JsonObject)parser.parse(response);
//获取返回状态吗
String resultcode=obj.get("resultcode").getAsString();
//状态码如果是200说明数据返回成功
if(resultcode!=null&&resultcode.equals("200")){
JsonObject resultObj=obj.get("result").getAsJsonObject();
JsonArray futureWeatherArray=resultObj.get("future").getAsJsonArray();
for(int i=0;i<futureWeatherArray.size();i++){
Weather weather=new Weather();
JsonObject weatherObject=futureWeatherArray.get(i).getAsJsonObject();
weather.setDayOfWeek(weatherObject.get("week").getAsString());
weather.setDate(weatherObject.get("date").getAsString());
weather.setTemperature(weatherObject.get("temperature")
.getAsString());
weather.setWeather(weatherObject.get("weather")
.getAsString());
data.add(weather);
}
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_weather);
initViews();
setListeners();
}
private void initViews() {
// TODO Auto-generated method stub
etCity=(EditText) findViewById(R.id.etCity);
bthQuery=(ImageButton)findViewById(R.id.btnQuery);
lvFutureWeather=(ListView) findViewById(R.id.lvFutureWeather);
}
private void setListeners() {
// TODO Auto-generated method stub
bthQuery.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
// TODO Auto-generated method stub
String city = etCity.getText().toString();
System.out.println("lvFutureWeather"+lvFutureWeather);
Toast.makeText(WeatherActivity.this,"success", Toast.LENGTH_LONG).show();
String weatherUrl ="http://v.juhe.cn/weather/index?format=2&cityname="+city+"&key=1ee0812dbfce1067b71da9d6aac95b86";
HttpUtil.sendHttpRequest(weatherUrl, new HttpCallbackListener() {
@Override
public void onFinish(String response) {
// TODO Auto-generated method stub
Message message = new Message();
message.what=SHOW_RESPONSE;
message.obj=response.toString();
handler.sendMessage(message);
}
@Override
public void onError(Exception e) {
// TODO Auto-generated method stub
System.out.println("访问失败");
}
});
}
});
}
}
weathergettest
public class WeatherGetTest extends AndroidTestCase {
public void testGetData(){
String weatherUrl="http://v.juhe.cn/weather/index?format=2&cityname=滨州&key=1ee0812dbfce1067b71da9d6aac95b86";
HttpUtil.sendHttpRequest(weatherUrl, new HttpCallbackListener() {
public void onFinish(String response) {
// TODO Auto-generated method stub
System.out.println(response);
}
public void onError(Exception e) {
// TODO Auto-generated method stub
}
});
}
}
三 实验后的体会
本次实验的天气预报,显示从聚合上申请key然后在网页上可以打开看到
但在模拟器上打开应用就只显示success,不弹出天气,而且还有soundpool could not load file这个问题,一开始以为是安卓版本的问题,但是其他人的都可以,可能是字符串的接收问题。一开始认为是网址弄错了,后来发现没错,但程序始终调试不出来。