JSON 解析 网络 上 天气预报
来源:互联网 发布:软件 复制 绿色化 编辑:程序博客网 时间:2024/05/17 01:27
manifest 中要 开启 网络权限
<span style="font-size:14px;"><uses-permission android:name="android.permission.INTERNET" /></span>
布局文件
<span style="font-size:14px;"> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/editText_city" android:text="北京" android:layout_alignParentTop="true" android:layout_alignParentStart="true" android:layout_toStartOf="@+id/button2_query" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="查询" android:onClick="queryClick" android:id="@+id/button2_query" android:layout_alignTop="@+id/editText_city" android:layout_alignParentEnd="true" /></RelativeLayout></span>
Activity代码
<span style="font-size:14px;">public class WeatherActivity extends AppCompatActivity { private EditText editText_city; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_weather); editText_city = (EditText) findViewById(R.id.editText_city); weatherHandler = new WeatherHandler(this); }/*** 布局文件中 按钮 的单击 事件*/ public void queryClick(View view){ String city = editText_city.getText().toString(); if(TextUtils.isEmpty(city)){ // 防止输入框为空 Toast.makeText(WeatherActivity.this, "请输入城市", Toast.LENGTH_SHORT).show(); return; } query(city); //抽取成方法到下面 } private WeatherHandler weatherHandler; private static class WeatherHandler extends Handler{ private WeakReference<WeatherActivity> weakReference; // 防止 内存泄露 使用 弱引用 public WeatherHandler(WeatherActivity weatherActivity){ weakReference = new WeakReference<WeatherActivity>(weatherActivity); } @Override public void handleMessage(Message msg) { WeatherActivity weatherActivity = weakReference.get(); if(weatherActivity!=null){ switch (msg.what){ case GET_WEATHER_SUCCESS: System.out.println(((ArrayList<String>)msg.obj).toString()); // break; } } } } public static final int GET_WEATHER_SUCCESS = 0x1; // 下一行的 网址可能有问题 忽略 主要看 逻辑流程 private static final String ROOT_PATH = "http://ws.webxml.com.cn/WebServices/WeatherWS.asmx/getWeather?theUserID=&theCityCode=826"; private void query(final String city) { new Thread(new Runnable() { //访问网络是耗时的,所以 用子线程 来执行 @Override public void run() { String path = ROOT_PATH; try { URL url = new URL(path); // 开启网络 连接 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); XmlPullParser xmlPullParser = Xml.newPullParser(); //Xml 静态方法 得到 XmlPullParser 对象 xmlPullParser.setInput(conn.getInputStream(),"utf-8"); //设置流标准 int eventType = xmlPullParser.getEventType(); ArrayList<String> list = new ArrayList<String>(); //接收 解析出来 的值 添加到集合 while(eventType!=XmlPullParser.END_DOCUMENT){ switch (eventType){ case XmlPullParser.START_TAG: if("string".equals(xmlPullParser.getName())){ // 由于 全部是<string> , 只判断一个 标签名就行了 list.add(xmlPullParser.nextText()); // 得到 标签值 添加到 list } break; } eventType = xmlPullParser.next(); } Message msg = weatherHandler.obtainMessage(GET_WEATHER_SUCCESS,list); // 把list 封装到 Message 对象 发送 weatherHandler.sendMessage(msg); // 发送 给 handleMessage } catch (MalformedURLException e) { e.printStackTrace(); } catch (XmlPullParserException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }).start(); }}</span>
0 0
- JSON 解析 网络 上 天气预报
- json解析天气预报
- json天气预报解析
- Json解析之天气预报
- Android天气预报(Json解析)
- 从网络获取json并解析得简单天气预报实现
- 网路:JSON 解析(天气预报)
- 国家气象局天气预报接口JSON完全解析
- Android:国家气象局天气预报接口JSON完全解析
- iOS开发json解析之天气预报
- Android实战--天气预报(API+JSON解析)
- Android天气预报,Json解析,百度天气接口
- 最新最全天气预报附带Json解析
- swift网络之json(天气预报)
- android如何解析网络上的json数据。
- 从网络上解析json小实例 分步骤参考
- 解析网络json数据并展示到ListView上
- 解析网络上的json和图片的工具
- leetcode-283. Move Zeroes c语言
- Android 圆形的TextView
- 699B - One Bomb
- 39、jQuery(1)
- Flyweight模式
- JSON 解析 网络 上 天气预报
- MySQL数据库解压版,配置要点
- 杭电OJ2030-汉字统计
- Android之获取控件的坐标
- Range Addition
- Gnuplot:绘图
- java华氏温度与摄氏度的互相转换
- python运行Windows应用程序
- Android之控件按下抬起变色样式