自己想做一个简单的天气预报,由于能力有限,暂时做个简单的。

大概讲一下自己的开发步骤吧。

第一步:获得可以开发的json数据的及时更新的接口。

通过强大的度娘,我这里使用的json的地址是:http://wthrcdn.etouch.cn/weather_mini?citykey=101010100

第二步:实现各大城市编号的获取

实现方法:网上下载一个包含各大城市的db文件db_weather.db,下载地址:http://pan.baidu.com/s/1hqkxlxM

这个db文件里面包含中国各大省份及城市编号,里面的大概内容截图如下所示

这个是省份表:

Android学习之天气预报简单版

这个是城市表:

Android学习之天气预报简单版

 

把这个db文件下载下来,通过DDMS,把这个文件放到android测试机的/sdcard目录下

然后编写一些界面响应,获取省份 以及城市的编号,例如北京:101010100

获取省份和城市编号的代码如下

以下是MainActivity的代码(初次写,很多方法没有进行封装,日后有机会进行代码优化)

  1 package com.oysd.mywea;
  2 
  3 import java.io.File;
  4 import java.util.ArrayList;
  5 import java.util.List;
  6 
  7 import android.app.Activity;
  8 import android.content.Intent;
  9 import android.database.Cursor;
 10 import android.database.sqlite.SQLiteDatabase;
 11 import android.os.Bundle;
 12 import android.view.Menu;
 13 import android.view.MenuItem;
 14 import android.view.View;
 15 import android.view.View.OnClickListener;
 16 import android.widget.AdapterView;
 17 import android.widget.AdapterView.OnItemSelectedListener;
 18 import android.widget.ArrayAdapter;
 19 import android.widget.Button;
 20 import android.widget.Spinner;
 21 import android.widget.Toast;
 22 
 23 public class MainActivity extends Activity {
 24     
 25     private File f = new File("/sdcard/weather/db_weather.db");
 26     private Spinner province;//省份
 27     private Spinner city;//城市
 28     private List<String> proset=new ArrayList<String>();//省份集合
 29     private List<String> cityset=new ArrayList<String>();//城市集合
 30     private Button showWea;
 31     private int pro_id;//省份id号
 32     private long city_num;
 33     private String pro_name;
 34     
 35     @Override
 36     protected void onCreate(Bundle savedInstanceState) {
 37         super.onCreate(savedInstanceState);
 38         setContentView(R.layout.activity_main);
 39         
 40         province = (Spinner) findViewById(R.id.provinces);
 41         city = (Spinner) findViewById(R.id.city);
 42         showWea = (Button) findViewById(R.id.showWea);
 43         
 44         ArrayAdapter<String> pro_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, getProSet());
 45         province.setAdapter(pro_adapter);
 46         province.setOnItemSelectedListener(new SelectProvince());//添加省份监听
 47         
 48         city.setOnItemSelectedListener(new SelectCity());//添加城市选择监听
 49         showWea.setOnClickListener(new OnClickListener() {
 50             
 51             @Override
 52             public void onClick(View v) {
 53                 // TODO Auto-generated method stub
 54                 
 55                 Bundle b = new Bundle();
 56                 b.putLong("city_num", city_num);
 57                 b.putString("pro_name", pro_name);
 58                 Intent intent = new Intent(MainActivity.this , WeaActivity.class);
 59                 intent.putExtras(b);
 60                 startActivity(intent);
 61             }
 62         });
 63     }
 64     
 65     /**
 66      * 增加省份监听类
 67      * @author Administrator
 68      *
 69      */
 70     class SelectProvince implements OnItemSelectedListener{
 71 
 72         @Override
 73         public void onItemSelected(AdapterView<?> parent, View view, int position,
 74                 long id) {
 75             // TODO Auto-generated method stub
 76             pro_id = position;
 77             pro_name = getProName();
 78             city.setAdapter(getAdapter());
 79         }
 80 
 81         @Override
 82         public void onNothingSelected(AdapterView<?> arg0) {
 83             // TODO Auto-generated method stub
 84             
 85         }
 86         
 87     }
 88     
 89     class SelectCity implements OnItemSelectedListener{
 90 
 91         @Override
 92         public void onItemSelected(AdapterView<?> parent, View view, int position,
 93                 long id) {
 94             // TODO Auto-generated method stub
 95             
 96             String cityname = parent.getItemAtPosition(position).toString();
 97             city_num = getCityNum(position);
 98             
 99             //提示一下
100             Toast.makeText(getApplicationContext(), cityname+":" + city_num, 2000).show();
101             
102         }
103 
104         @Override
105         public void onNothingSelected(AdapterView<?> arg0) {
106             // TODO Auto-generated method stub
107             
108         }
109         
110     }
111     
112     /**
113      * 返回省份集合
114      */
115     public List<String> getProSet(){
116         //打开数据库
117         SQLiteDatabase db1 = SQLiteDatabase.openOrCreateDatabase(f, null);
118         Cursor cursor = db1.query("provinces", null, null, null, null, null, null);
119         while(cursor.moveToNext()){
120             String pro = cursor.getString(cursor.getColumnIndexOrThrow("name"));
121             proset.add(pro);
122         }
123         cursor.close();
124         db1.close();
125         return proset;
126     }
127     
128     /**
129      * 返回城市集合
130      */
131     public List<String> getCitySet(int pro_id){
132         cityset.clear();//清空一下城市列表
133         
134         SQLiteDatabase db2 = SQLiteDatabase.openOrCreateDatabase(f, null);
135         Cursor cursor = db2.query("citys", null, "province_>);
136         while(cursor.moveToNext()){
137             String city = cursor.getString(cursor.getColumnIndexOrThrow("name"));
138             cityset.add(city);
139         }
140         cursor.close();
141         db2.close();
142         return cityset;
143     }
144     
145     /**
146      * 返回城市的编号
147      * @param position
148      * @return
149      */
150     public long getCityNum(int position){
151         SQLiteDatabase db3 = SQLiteDatabase.openOrCreateDatabase(f, null);
152         Cursor cursor = db3.query("citys", null, "province_>);
153         cursor.moveToPosition(position);
154         long citynum = cursor.getLong(cursor.getColumnIndexOrThrow("city_num"));
155         cursor.close();
156         db3.close();
157         return citynum;
158     }
159     
160     /**
161      * 获取省份名字
162      * @return
163      */
164     public String getProName(){
165         SQLiteDatabase db4 = SQLiteDatabase.openOrCreateDatabase(f, null);
166         int pp = pro_id + 1;
167         Cursor cursor = null;
168         
169         cursor = db4.query("provinces", null, "_>);
170         //cursor.moveToPosition(0);
171         String proname = null;
172         while(cursor.moveToNext()){
173         proname = cursor.getString(cursor.getColumnIndex("name"));
174         }
175         cursor.close();
176         db4.close();
177         return proname;
178     }
179     /**
180      * 返回选择城市的适配器
181      * @return
182      */
183     public ArrayAdapter<String> getAdapter(){
184         ArrayAdapter<String> city_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, getCitySet(pro_id));
185         return city_adapter;
186     }
187 }
View Code

相关文章: