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();
}
}