main.xml[html] view plaincopyprint?    <?xml version="1.0" encoding="utf-8"?>      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"          android:orientation="vertical"          android:layout_width="fill_parent"          android:layout_height="fill_parent"          >                <LinearLayout              android:layout_width="fill_parent"              android:layout_height="wrap_content"              android:orientation="horizontal"              >              <EditText              android:id="@+id/CityName"               android:layout_width="250dp"               android:layout_height="wrap_content"              android:layout_marginTop="2dip"              android:text="shenzhen">          </EditText>          <Button              android:id="@+id/ButtonGo"               android:layout_width="70dp"               android:layout_height="wrap_content"              android:layout_gravity="right|top"                android:text="go!go!">          </Button>          </LinearLayout>                    <TextView                android:layout_width="fill_parent"               android:layout_height="fill_parent"               android:scrollbars="vertical"              android:background="#ffffff"              android:textColor="#000000"          android:id="@+id/infoText"          />          </LinearLayout>   weatherActivity.java[html] view plaincopyprint?    public class weatherActivity extends Activity {                      private Button mButton = null;          private TextView mTextView = null;          private EditText mCityNameEdit = null;                final String DEBUG_TAG = "weather";                /** Called when the activity is first created. */          @Override          public void onCreate(Bundle savedInstanceState) {              super.onCreate(savedInstanceState);              setContentView(R.layout.main);                            mTextView = (TextView)findViewById(R.id.infoText);              mTextView.setMovementMethod(ScrollingMovementMethod.getInstance());               mCityNameEdit = (EditText)findViewById(R.id.CityName);              mButton = (Button) findViewById(R.id.ButtonGo);              mButton.setOnClickListener(new Button.OnClickListener() {                  public void onClick(View v) {                                     connect();                                      }              });                                }      }    1.连接网络,基于Http协议。一般是发送请求到某个应用服务器。此时需要用到HttpURLConnection,打开连接,获得数据流,读取数据流。   private void connect()      {      //http地址      //String httpUrl = "http://flash.weather.com.cn/wmaps/xml/shenzhen.xml";      String httpUrl = "http://flash.weather.com.cn/wmaps/xml/"+mCityNameEdit.getText().toString()+".xml";            String resultData = "";//获得的数据      URL url = null;      try      {          //构造一个URL对象          url = new URL(httpUrl);       }      catch (MalformedURLException e)      {          Log.e(DEBUG_TAG, "MalformedURLException");      }      if (url != null)      {          try          {              //使用HttpURLConnection打开连接              HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();              //得到读取的内容(流)              InputStreamReader in = new InputStreamReader(urlConn.getInputStream());              // 为输出创建BufferedReader              BufferedReader buffer = new BufferedReader(in);              String inputLine = null;              //使用循环来读取获得的数据              while (((inputLine = buffer.readLine()) != null))              {                  //我们在每一行后面加上一个"\n"来换行                  resultData += inputLine + "\n";              }                       in.close();              urlConn.disconnect();              //设置显示取得的内容              if ( resultData != null )              {                  mTextView.setText("");                  weatherInfoXmlPullParser(resultData);//解析XML              }              else               {                  mTextView.setText("读取的内容为NULL");              }          }          catch (IOException e)          {              Log.e(DEBUG_TAG, "IOException");          }      }      else      {          Log.e(DEBUG_TAG, "Url NULL");      }        }   2.用PULL方式解析xmlPULL方式读xml会回调事件:   读取到xml的声明返回      START_DOCUMENT;   读取到xml的结束返回       END_DOCUMENT ;   读取到xml的开始标签返回 START_TAG   读取到xml的结束标签返回 END_TAG   读取到xml的文本返回       TEXT    public void weatherInfoXmlPullParser(String buffer){                            XmlPullParser xmlParser = Xml.newPullParser();//获得XmlPullParser解析器                       ByteArrayInputStream tInputStringStream = null;          if (buffer != null && !buffer.trim().equals(""))          {             tInputStringStream = new ByteArrayInputStream(buffer.getBytes());          }          else          {              return ;          }                try           {              //得到文件流,并设置编码方式              //InputStream inputStream=mContext.getResources().getAssets().open(fileName);              //xmlParser.setInput(inputStream, "utf-8");              xmlParser.setInput(tInputStringStream, "UTF-8");                            //获得解析到的事件类别,这里有开始文档,结束文档,开始标签,结束标签,文本等等事件。              int evtType=xmlParser.getEventType();                             while(evtType!=XmlPullParser.END_DOCUMENT)//一直循环,直到文档结束                 {                   switch(evtType)                  {                   case XmlPullParser.START_TAG:                      String tag = xmlParser.getName();                       //如果是city标签开始,则说明需要实例化对象了                      if (tag.equalsIgnoreCase("city"))                       {                           weatherInfo info = new weatherInfo();                           //取出标签中的一些属性值                          info.setCityWeatherInfo(xmlParser);                          mTextView.append(info.getCityWeatherInfo()+"\n");                      }                      break;                                     case XmlPullParser.END_TAG:                      //标签结束                                     default:break;                  }                  //如果xml没有结束,则导航到下一个节点                  evtType=xmlParser.next();              }          }           catch (XmlPullParserException e) {               // TODO Auto-generated catch block               e.printStackTrace();          }          catch (IOException e1) {               // TODO Auto-generated catch block               e1.printStackTrace();          }       }  weatherInfo.java       public class weatherInfo{                        static String cityname = "深圳";              static String stateDetailed ="多云转阵雨";              static String tem1 ="28";               static String tem2 ="22";               static String temNow ="25";              static String windState="微风";              static String windDir="北风";              static String windPower="2级";              static String humidity="63%";              static String time="10:30";                            public void setCityWeatherInfo(XmlPullParser xmlParser)              {                  cityname = xmlParser.getAttributeValue(null, "cityname");                  stateDetailed = xmlParser.getAttributeValue(null, "stateDetailed");                  tem1 = xmlParser.getAttributeValue(null, "tem1");                  tem2 = xmlParser.getAttributeValue(null, "tem2");                  temNow = xmlParser.getAttributeValue(null, "temNow");                  windState = xmlParser.getAttributeValue(null, "windState");                  windDir = xmlParser.getAttributeValue(null, "windDir");                  windPower = xmlParser.getAttributeValue(null, "windPower");                  humidity = xmlParser.getAttributeValue(null, "humidity");                  time = xmlParser.getAttributeValue(null, "time");              }                            public String getCityWeatherInfo()              {                  String info = "所在城市:"+cityname + "\n"                      +"天气情况:"+stateDetailed + ", 湿度:" +humidity + "\n"                      +"现在气温:"+temNow + "°C, "+"最低:"+tem2 + "°C, "+"最高:"+tem1 + "°C\n"                      +"风情:"+windState +", 风向:"+windDir + ", 风力:"+windPower + "\n"                                      +"更新时间:"+time + "\n";                  return info;              }            }  

更多相关文章

  1. Android中attr自定义标签详解
  2. Android 官方文档:(二)应用清单 —— 2.26 <uses-permission>标签
  3. 移动端H5的Video标签无法播放在线视频的问题
  4. {转}实现谷歌Android摄像头拍照 2010-06-24 16:16:04| 分类: andr
  5. Android中使用Gallery_tabhost来实现标签效果图源码
  6. Android——TabHost(标签容器)相关知识总结贴
  7. AndroidMainifest标签使用说明3——<activity-alias>

随机推荐

  1. 2011.08.26——— android ListView之多
  2. Android中话bitmap的简单示例
  3. Android(安卓)判断SD卡是否存在及容量查
  4. Android(安卓)源码编译make的错误处理
  5. android中加载assets中的资源文件
  6. Android选项卡(TabWidget)应用
  7. android中加载assets中的资源文件
  8. 【翻译】(14)Stable APIs
  9. Android(安卓)Untold Stories
  10. [Android]安装使用SDK Manager更新时出现