[android] 天气app布局练习(四)

[android] 天气app布局练习(四),第1张

概述主要练习一下获取网络数据和解析xml MainActivity.java HttpUtil.java HttpListener.java

主要练习一下获取网络数据和解析xml

MainActivity.java

package com.example.weatherreport;import java.io.UnsupportedEnCodingException; java.net.URLEncoder; java.util.ArrayList; java.util.HashMap; java.util.List; java.util.Map; androID.app.Activity; androID.os.Bundle; androID.Widget.GrIDVIEw; androID.Widget.SimpleAdapter; androID.Widget.TextVIEw; com.example.weatherreport.contants.APIContants; com.example.weatherreport.domain.Weather; com.example.weatherreport.net.httpListener; com.example.weatherreport.net.httpUtil;public class MainActivity extends Activity {    private GrIDVIEw gv_airs;     TextVIEw tv_city;     TextVIEw tv_number;     TextVIEw tv_rain;     TextVIEw tv_cloth;    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_main);        gv_airs = (GrIDVIEw) findVIEwByID(R.ID.gv_airs);        tv_city=(TextVIEw) findVIEwByID(R.ID.tv_city);        tv_number=(TextVIEw) findVIEwByID(R.ID.tv_number);        tv_rain=(TextVIEw) findVIEwByID(R.ID.tv_rain);        tv_cloth=(TextVIEw) findVIEwByID(R.ID.tv_cloth);        setVIEwData();        makeGrIDVIEw();    }    /**     * 设置界面数据     */    private  setVIEwData() {        String city = null;        try {            city = URLEncoder.encode("北京","gb2312");        } catch (UnsupportedEnCodingException e) {            e.printstacktrace();        }        httpUtil.get(APIContants.WEATHER_URL+"?city="+city+"&password=DJOYnIET8234jlsK&day=0",new httpListener() {            @OverrIDe             onSuccess(String result) {                Weather weather=(Weather) httpUtil.xml2object(result);                setVIEwWeather(weather);                            }            @OverrIDe             onError(String result) {                System.out.println(result);            }        });    }     setVIEwWeather(Weather weather) {        tv_city.setText(weather.getCity());        tv_number.setText(weather.getHot());        tv_rain.setText(weather.getRain());        tv_cloth.setText(weather.getCloth());        System.out.println(weather.toString());    }         * 组装GrIDVIEw      makeGrIDVIEw() {        List<Map<String,String>> data = new ArrayList<>();        Map<String,String> item = ;        item = new HashMap<>();        item.put("Title","83");        item.put("desc","湿度(%)");        data.add(item);        item = );        data.add(item);        SimpleAdapter adapter = new SimpleAdapter(this,data,R.layout.main_grID_item,new String[] { "Title","desc" },1)">new int[] { R.ID.tv_Title,R.ID.tv_desc });        gv_airs.setAdapter(adapter);    }}

 

httpUtil.java

 com.example.weatherreport.net; java.io.ByteArrayOutputStream; java.io.inputStream; java.io.StringReader; java.net.httpURLConnection; java.net.URL; org.xmlpull.v1.XmlPullParser; androID.os.Handler; androID.os.Message; androID.util.Xml; com.example.weatherreport.domain.Weather;class httpUtil {    static final int SUCCESS = 1;    int ERROR = 2;         * 获取get数据     *      * @param APIUrl     voID get(final String APIUrl,1)">final httpListener Listener) {        final Handler handler =  httpHandler(Listener);        new Thread( Runnable() {            @OverrIDe             run() {                Message msg =  Message();                 {                    URL url =  URL(APIUrl);                    httpURLConnection conn = (httpURLConnection) url                            .openConnection();                    conn.setRequestMethod("GET");                    conn.setConnectTimeout(5000);                    int code = conn.getResponseCode();                    if (code == 200) {                        inputStream is = conn.getinputStream();                        String result = readinputStream(is);                        msg.what = SUCCESS;                        msg.obj = result;                        handler.sendMessage(msg);                    } else {                        Listener.onError(String.valueOf(code));                    }                }  (Exception e) {                    e.printstacktrace();                    msg.what = ERROR;                    msg.obj = "网络异常";                    handler.sendMessage(msg);                }            }        }).start();    }         * 读取输入流     *      *  is     * @return     static String readinputStream(inputStream is) {        ByteArrayOutputStream baos =  ByteArrayOutputStream();        int len = 0byte[] buffer = byte[1024];         {            while ((len = is.read(buffer)) != -1) {                baos.write(buffer,0byte[] res = baos.toByteArray();            return  String(res);        }  (Exception e) {            e.printstacktrace();        }        ;    }         * 解析xml     *      *  Object xml2object(String xmlString) {        Weather weather =  Weather();         {            XmlPullParser pullParser = Xml.newPullParser();            pullParser.setinput( StringReader(xmlString));            int event = pullParser.getEventType();            while (event != XmlPullParser.END_document) {                switch (event) {                case XmlPullParser.START_TAG:                    String tagname = pullParser.getname();                    if (tagname.equals("Weather") || tagname.equals("Profiles")) {                    }  {                        String tagValue = pullParser.nextText();                        System.out.println(tagname + ":" + tagValue);                        if (tagname.equals("status1")) {                            weather.setRain(tagValue);                        }                        if (tagname.equals("tgd1")) {                            weather.setHot(tagValue);                        }                        if (tagname.equals("chy_l")) {                            weather.setCloth(tagValue);                        }                        if (tagname.equals("city")) {                            weather.setCity(tagValue);                        }                    }                    break;                 XmlPullParser.END_TAG:                default:                    ;                }                event = pullParser.next();            }        } return weather;    }} *  * 位于主线程的Handler * @author taoshihan * */class httpHandler  Handler {     httpListener Listener;    public httpHandler(httpListener Listener) {        this.Listener=Listener;    }    @OverrIDe     handleMessage(Message msg) {        int flag=msg.what;        String res=(String)msg.obj;        if (flag==httpUtil.SUCCESS) {            Listener.onSuccess(res);        }{            Listener.onError(res);        }    }}

httpListener.java

interface httpListener {     onSuccess(String result);     onError(String result);}

 

总结

以上是内存溢出为你收集整理的[android] 天气app布局练习(四)全部内容,希望文章能够帮你解决[android] 天气app布局练习(四)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1121203.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存