简单的天气查询

public class JsonTask extends AsyncTask<String, Void, List<Data>> {
List<Data> list = null;
private Context context;
private ListView listview;
private SimpleAdapter adapter;


private List<Map<String,Object>> data;


public JsonTask(Context context, ListView listview) {
super();
this.context = context;
this.listview = listview;
}




@Override
protected List<Data> doInBackground(String... params) {
String url = params[0];
String jsonString = null;
CityWeather cityWeather=null;

if (url != null) {
try {
jsonString = HttpUtil.getJsonString(url);


cityWeather=ParseTool.parseCity(jsonString);
list= cityWeather.getData();


} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
}

return list;
}





@Override
protected void onPostExecute(List<Data> result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
getAdapter();
listview.setAdapter(adapter);

}

/**
 * 得到ListView的适配器
 * @return
 */
private SimpleAdapter getAdapter() {
this.data=getData(list);
adapter=new SimpleAdapter(
        context, //上下文对象
        this.data, //数据源
        R.layout.layout_showeather,//ListView控件中每一个条目对应的布局文件
        new String[]{"image","date","weather","temperature","winddirect"},//数据源中map的key的集合
        new int[]{R.id.imageView_weather,R.id.textView_showdat,R.id.textView_tianqi,R.id.textView_showwen,R.id.textView_fengxiang}//布局文件中控件id的集合
        );
return adapter;
}
 
/**
 * 得到适配器的数据源
 * @return
 */
private List<Map<String, Object>> getData(List<Data> lis) {
this.data=new ArrayList<Map<String,Object>>();
int len=lis.size();


for(int i=0;i<len;i++){
Map<String,Object> map=new HashMap<String, Object>();
map.put("date", lis.get(i).getDate());
map.put("weather", lis.get(i).getWeather());
map.put("temperature", lis.get(i).getTemperature());
map.put("winddirect", lis.get(i).getWinddirect());


String wea=lis.get(i).getWeather();
if(wea.equals("晴间多云")){
map.put("image", R.drawable.d01);
}else if(wea.equals("晴")){
map.put("image", R.drawable.d00);
}else if(wea.equals("多云转阴")){
map.put("image", R.drawable.d03);
}else if(wea.equals("阵雨转多云")){
map.put("image", R.drawable.d07);
}else if(wea.equals("多云")){
map.put("image", R.drawable.d03);
}else{
map.put("image", R.drawable.d22);
}



this.data.add(map);
}
System.out.println("data="+data);

return this.data;
}


}

package com.example.weatherdemo1;


import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


import org.xmlpull.v1.XmlPullParserException;


import com.example.httpjsondemo2.asynctask.JsonTask;
import com.example.weatherdemo1.entity.City;
import com.example.weatherdemo1.entity.Data;
import com.example.weatherdemo1.entity.District;
import com.example.weatherdemo1.entity.Province;
import com.example.weatherdemo1.tool.CityParseTool;


import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.Toast;
import android.app.Activity;


public class MainActivity extends Activity {

private Spinner spinner1,spinner2,spinner3;
private ListView listView_weather;

private ArrayAdapter<Province> adapter_province;
private ArrayAdapter<City> adapter_city;
private ArrayAdapter<District> adapter_district;

private List<Province> provinces = null;
private List<City> citys = null;
private List<District> districts = null;
private int province_pos;
private int city_pos;
private int dis_pos;

private TextView textView_showdat;
private TextView textView_showwen;
private TextView textView_fengxiang;
private TextView textView_tianqi;
private ImageView imageView_weather;
private List<Data> lis;
    private static final String path ="http://weather.xcyh.org/101010100/json/6";


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();

CityParseTool tool=new CityParseTool(this);

try {
provinces=tool.parse();
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
adapter_province=new ArrayAdapter<Province>(this, android.R.layout.simple_list_item_1,provinces);
spinner1.setAdapter(adapter_province);

jianting();

new JsonTask(this,listView_weather).execute(path);

}


/**
* 监听spinner1
*/
private void jianting() {
spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {


@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
province_pos=position;
adapter_city=new ArrayAdapter<City>(MainActivity.this, android.R.layout.simple_list_item_1,provinces.get(position).getCitys());
spinner2.setAdapter(adapter_city);

}


@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub

}
});
spinner2.setOnItemSelectedListener(new OnItemSelectedListener() {


@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
city_pos=position;
adapter_district=new ArrayAdapter<District>(MainActivity.this,
android.R.layout.simple_list_item_1,
provinces.get(province_pos).getCitys().get(position).getDistricts());

spinner3.setAdapter(adapter_district);
}


@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub

}
});
spinner3.setOnItemSelectedListener(new OnItemSelectedListener() {


@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
dis_pos=position;

}


@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub

}
});
}


/**
* 初始化控件
*/
private void initView() {

spinner1=(Spinner) findViewById(R.id.spinner1);
spinner2=(Spinner) findViewById(R.id.spinner2);
spinner3=(Spinner) findViewById(R.id.spinner3);
listView_weather=(ListView) findViewById(R.id.listView_weather);

textView_fengxiang=(TextView) findViewById(R.id.textView_fengxiang);
textView_showdat=(TextView) findViewById(R.id.textView_dat);
textView_showwen=(TextView) findViewById(R.id.textView_showwen);
textView_tianqi=(TextView) findViewById(R.id.textView_tianqi);

imageView_weather=(ImageView) findViewById(R.id.imageView_weather);


}

public void getWeather(View v){
//String district=spinner3.getSelectedItem().toString();
String id=provinces.get(province_pos).getCitys().get(city_pos).getDistricts().get(dis_pos).getId();
String url="http://weather.xcyh.org/"+id+"/json/6";
new JsonTask(this,listView_weather).execute(url);
//Toast.makeText(this, district, Toast.LENGTH_SHORT).show();

}
 


}


/** * 查询全国所有的省,优先从数据库查询,如果没有查询到再去服务器上查询。 */ private void queryProvinces() { provinceList = coolWeatherDB.loadProvinces(); if (provinceList.size() > 0) { dataList.clear(); for (Province province : provinceList) { dataList.add(province.getProvinceName()); } adapter.notifyDataSetChanged(); listView.setSelection(0); titleText.setText("中国"); currentLevel = LEVEL_PROVINCE; } else { queryFromServer(null, "province"); } } /** * 查询选中省内所有的市,优先从数据库查询,如果没有查询到再去服务器上查询。 */ private void queryCities() { cityList = coolWeatherDB.loadCities(selectedProvince.getId()); if (cityList.size() > 0) { dataList.clear(); for (City city : cityList) { dataList.add(city.getCityName()); } adapter.notifyDataSetChanged(); listView.setSelection(0); titleText.setText(selectedProvince.getProvinceName()); currentLevel = LEVEL_CITY; } else { queryFromServer(selectedProvince.getProvinceCode(), "city"); } } /** * 查询选中市内所有的县,优先从数据库查询,如果没有查询到再去服务器上查询。 */ private void queryCounties() { countyList = coolWeatherDB.loadCounties(selectedCity.getId()); if (countyList.size() > 0) { dataList.clear(); for (County county : countyList) { dataList.add(county.getCountyName()); } adapter.notifyDataSetChanged(); listView.setSelection(0); titleText.setText(selectedCity.getCityName()); currentLevel = LEVEL_COUNTY; } else { queryFromServer(selectedCity.getCityCode(), "county"); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值