·¢²¼Ê±¼ä : ÐÇÆÚÈý ÎÄÕ°²×¿ÌìÆøÔ¤±¨¿Î³ÌÉè¼Æ¸üÐÂÍê±Ï¿ªÊ¼ÔĶÁ
Androidϵͳ¿Î³ÌÉè¼Æ
ÒÔ·½±ãºóÃæʹÓᣴúÂëÈçÏÂËùʾ¡£¶¨ÒåÊý¾Ý¿âÃû£¬°æ±¾¡£½«¹¹Ôì·½·¨Ë½Óл¯£¬ÊµÀý»¯Êý¾Ý¿â¡£±£´æ¼ÓÔØÊ¡¼¶¡¢Êм¶¡¢Ïؼ¶Êý¾ÝÐÅÏ¢
´ÓÌá½»µÄ³ÌÐòÖпÉÒÔ¿´µ½CoolWeatherDBÊÇÒ»¸öµ¥ÀýÀ࣬ÕâÀォËüµÄ¹¹Ôì·½·¨Ë½Óл¯£¬²¢ÌṩÁËÒ»¸ögetInstance()·½·¨À´»ñÈ¡CoolWeatherDBµÄʵÀý£¬ÕâÑù¾Í¿ÉÒÔ±£Ö¤È«¾Ö·¶Î§ÄÚÖ»»áÓÐÒ»¸öCoolWeatherDBµÄʵÀý¡£ÔÚCoolWeatherDBÖУ¬ÌṩÁËÁù×é·½·¨£¬saveProvince()¡¢loadProvince()¡¢saveCity()¡¢loadCities()¡¢saveCounty()¡¢loadCounties(),·Ö±ðÓÃÓڴ洢ʡ·ÝÊý¾Ý¡¢¶ÁÈ¡ËùÓÐÊ¡·ÝÊý¾Ý£¬´æ´¢³ÇÊÐÊý¾Ý¡¢¶ÁȡijʡÄÚËùÓгÇÊÐÊý¾Ý£¬´æ´¢ÏØÊý¾Ý¡¢¶ÁȡijÊÐÄÚËùÓÐÏصÄÊý¾Ý¡£
3.2.2.2 µÚ¶þ½×¶Î
1.È«¹úËùÓеÄÊ¡ÊÐÏصÄÊý¾Ý¶¼ÊÇ´Ó·þÎñÆ÷¶Ë»ñÈ¡µ½µÄ£¬ËùÒÔΪÁËʹ³ÌÐò¾ßÓбéÀúÈ«¹úÊ¡ÊÐÏصŦÄÜ£¬ÕâÀïºÍ·þÎñÆ÷µÄ½»»¥Ê½±Ø²»¿ÉÉٵġ£ËùÒÔÏÈÔÚutil°üÏÂÔö¼ÓÒ»¸öHttpUtilÀà¡£ÒòΪÔÚHttpUtilÖÐʹÓõ½ÁËHttpCallbackListener½Ó¿ÚÀ´»Øµ÷·þÎñ·µ»ØµÄ½á¹û£¬Òò´Ë»¹ÐèÒªÔÚutil°üÏÂÌí¼ÓÕâ¸ö½Ó¿Ú¡£ÁíÍâÓÉÓÚ·þÎñÆ÷·µ»ØµÄÊ¡ÊÐÏØÊý¾Ý¶¼ÊÇ¡°´úºÅ|³ÇÊУ¬´úºÅ|³ÇÊУ¬??¡±ÕâÖÖ¸ñʽµÄ£¬ËùÒÔÒªÔÙÌṩһ¸ö¹¤¾ßÀàÀ´½âÎöºÍ´¦ÀíÕâÖÖÊý¾Ý£¬¡£ÔÚutil°üÏÂÔÙн¨Ò»¸öUtilityÀà¡£ÔÚ¸ÃÀàÖУ¬ÌṩÁËhandlepRrovince()¡¢handleCitiesResponse()¡¢handleCountiesResponse()ÕâÈý¸ö·½·¨£¬·Ö±ðÓÃÓÚ½âÎöºÍ´¦Àí·þÎñÆ÷·µ»ØµÄÊ¡¼¶¡¢Êм¶¡¢Ïؼ¶Êý¾Ý¡£½âÎöµÄ¹æÔò¾ÍÊÇÏÈ°´¶ººÅ·Ö¸ô£¬ÔÙ°´µ¥ÊúÏß·Ö¸ô£¬½Ó׎«½âÎö³öÀ´µÄÊý¾ÝÉèÖõ½ÊµÌåÀàÖУ¬×îºóµ÷ÓÃCoolWeatherDBÖеÄÈý¸ösave()·½·¨½«Êý¾Ý´æ´¢µ½ÏàÓ¦µÄ±íÖС£Á½¸öÀàºÍÒ»¸ö½Ó¿ÚµÄ´´½¨Èçͼ3.5Ëùʾ¡£
ͼ3.5 ½âÎöÊý¾Ý¹¤¾ßÀà
2.¹¤¾ßÀà×¼±¸ºÃ£¬¿ªÊ¼²¼¾Ö£¬ÔÚres/layoutĿ¼ÏÂн¨choose_area.xml²¼¾Ö¡£²¼¾ÖÎļþÖеÄÄÚÈݱȽϼòµ¥£¬ÏÈÊǶ¨ÒåÒ»¸ö50dp¸ßµÄÍ·²¼¾Ö£¬²¢ÔÚÀïÃæ·ÅÖÃÁËÒ»¸öTextViewÓÃÓÚÏÔʾ±êÌâÄÚÈÝ¡£È»ºóÔÚÍ·²¼¾ÖµÄÏÂÃ涨ÒåÁËÒ»¸öListView,ÓÃÓÚÏÔʾʡÊÐÏصÄÊý¾Ý¡£
3.±àдÓÃÓÚ±éÀúÊ¡ÊÐÏصĻ£¬ÔÚactivity°üÏÂн¨ChooseAreaActivity¼Ì³Ð×ÔActivity¡£
¸ÃÀàÖеĴúÂë·Ç³£¶à£¬ÕâÀïÖ»°ÑÂß¼ÀíÀí¡£ÔÚonCreate()·½·¨ÖÐÏÈÊÇ»ñÈ¡µ½ÁËһЩ¿Ø¼þµÄʵÀý£¬È»ºóÈ¥³õʼ»¯ÁËArrayAdapter,½«ËüÉèÖÃΪListViewµÄÊÊÅäÆ÷¡£Ö®ºóÓÖÈ¥»ñÈ¡µ½ÁËCoolWeatherDBµÄʵÀý£¬²¢¸øListViewÉèÖÃÁ˵ã»÷ʼþ£¬µ½Õ⣬³õʼ
9
Androidϵͳ¿Î³ÌÉè¼Æ
»¯¹¤×÷Íê³É¡£
ÔÚonCreate()·½·¨µÄ×îºóµ÷ÓÃÁËqueryProvince()·½·¨£¬Ò²¾ÍÊÇ´ÓÕâÀ↑ʼ¼ÓÔØÊ¡¼¶Êý¾ÝµÄ¡£queryProvinces()·½·¨µÄÄÚ²¿»áÊ×Ïȵ÷ÓÃCoolWeatherDBºÍloadProvinces()·½·¨À´´ÓÊý¾Ý¿â¶ÁÈ¡Ê¡¼¶Êý¾Ý¡£Èç¹û¶ÁÈ¡µ½Á˾ÍÖ±½Ó½«Êý¾ÝÏÔʾµ½½çÃæÉÏ£¬Èç¹ûûÓжÁÈ¡µ½¾Íµ÷ÓÃqueryFromServer()·½·¨´Ó·þÎñÆ÷ÉϲéѯÊý¾Ý¡£
queryFromServer()·½·¨»áÏȸù¾Ý´«ÈëµÄ²ÎÊýÀ´Æ´×°²éѯµØÖ·£¬ÏÖÔÚÍøÉÏÓв»ÉÙÃâ·ÑµÄÌìÆøÔ¤±¨½Ó¿Ú¿ÉÒÔʵÏÖÉÏÊö¹¦ÄÜ£¬ÀýÈçÐÂÀËÌìÆø£¬°Ù¶ÈÌìÆøµÄ£¬ÕâÀïÎÒ×¼±¸Ê¹ÓÃÖйúÌìÆøÍøÌṩµÄAPI£¬½Ó¿ÚÀ´ÊµÏÖÉÏÊö¹¦ÄÜ¡£
±ÈÈçÒªÏ룬ŬÁ¦³öÖйúËùÓеÄÊ¡·Ý£¬Ö»Ðè·ÃÎÊÈçϵØÖ·£¬ÕâÀïÐèҪעÒ⣬Èç¹ûÓÃä¯ÀÀÆ÷Ö±½Ó·ÃÎʵĻ°£¬¿ÉÄÜ»áµÃµ½Ò»¸ö´íÎóÌáʾ¡£ÕâÊÇÒòΪä¯ÀÀÆ÷ÈÏΪ·þÎñÆ÷Ó¦¸Ã·µ»ØÒ»¸öxml¸ñʽµÄÊý¾Ý¡£µ«Êµ¼ÊÉÏ·þÎñÆ÷·µ»ØµÄÊý¾Ý£¬²¢²»ÊÇxml¸ñʽËùµ¼Öµģ¬ÓÒ¼ü²é¿´ÍøÒ³Ô´Âë´úÂë¾Í¿ÉÒÔ¿´µ½·þÎñÆ÷·µ»ØµÄÕæÊÇÊý¾ÝÁË£º
http://www.weather.com.cn/data/list3/city.xml
·þÎñÆ÷»á·µ»ØÒ»¶ÎÎı¾ÐÅÏ¢£¬ÆäÖаüº¬ÁËÖйúËùÓеÄÊ¡·ÝÃû³ÆÒÔ¼°Ê¡¼¶´úºÅ£¬ÈçÏÂ
01|±±¾©£¬02|ÉϺ££¬03|Ìì½ò£¬04|ÖØÇ죬05|ºÚÁú½£¬06|¼ªÁÖ£¬07|ÁÉÄþ£¬08|ÄÚÃɹţ¬09|ºÓ±±£¬10|ɽÎ÷£¬11|ÉÂÎ÷£¬12|ɽ¶«£¬13|н®£¬14|Î÷²Ø£¬15|Çຣ£¬16|¸ÊË࣬17|ÄþÏÄ£¬18|ºÓÄÏ£¬19|½ËÕ£¬20|ºþ±±£¬21|Õã½£¬22|°²»Õ£¬23|¸£½¨£¬24|½Î÷£¬25|ºþÄÏ£¬26|¹óÖÝ£¬27|ËÄ´¨£¬28|¹ã¶«£¬29|ÔÆÄÏ£¬30|¹ãÎ÷£¬31|º£ÄÏ£¬32|Ïã¸Û,33|°ÄÃÅ£¬34|̨Íå
¿ÉÒÔ¿´µ½±±¾©µÄ´úºÅÊÇ01,ÉϺ£µÄ´úºÅÊÇ02£¬²»Í¬Ê¡·ÝÖ®¼äÒÔ¶ººÅ¸ô¿ª£¬Ê¡·ÝÃû³ÆºÍÊ¡¼¶´úºÅÖ®¼äÓõ¥ÊúÏß·Ö¸ô¡£ÒªÏëÖªµÀij¸öÊ¡ÄÚÓÐÄÄЩ³ÇÊУ¬±ÈÈç½ËյĴúºÅÊÇ19£¬ÄÇôֻҪ·ÃÎÊÈçϵØÖ·£º
http://www.weather.com.cn/data/list3/city19.xml Õâ´Î·þÎñÆ÷·µ»ØµÄÊý¾ÝÈçÏ£º
190401|ËÕÖÝ£¬190402|³£Ê죬190403|ÕżҸۣ¬190404|À¥É½£¬190405|ÎâÏض«É½£¬190406|ÎâÏØ£¬190407|Îâ½£¬190408|Ì«²Ö
ͨ¹ýÕâÖÖ·½Ê½£¬¾ÍÄÜ°ÑÈ«¹úËùÓеÄÊ¡£¬ÊУ¬ÏØ£¬¶¼ÂÞÁгöÀ´ÁË¡£ÄÇô½â¾öÁËÈ«¹úÊ¡ÊÐÏØÊý¾ÝµÄ»ñÈ¡£¬È»ºó¾ÍÊǽâ¾ö²éѯÌìÆøÐÅÏ¢µÄÎÊÌâ¡£ÕâÀïÔÀíͬÉÏ£¬±ÈÈ磬À¥É½µÄÏؼ¶´úºÅÊÇ190404£¬ÄÇô·ÃÎÊÈçϵØÖ·£º
http://www.weather.com.cn/data/list3/city190404.xml Õâʱ·þÎñÆ÷·µ»ØµÄÊý¾Ý·Ç³£¼ò¶Ì£º 190404|101190404
ÆäÖкó°ë²¿·ÖµÄ101190404¾ÍÊÇÀ¥É½Ëù¶ÔÓ¦µÄÌìÆø´úºÅÁË¡£Õâ¸öʱºòÔÙÈ¥·ÃÎÊ
10
Androidϵͳ¿Î³ÌÉè¼Æ
²éѯÌìÆø½Ó¿Ú£¬½«ÏàÓ¦µÄÌìÆø´úºÅÌîÈë¼´¿É£¬½Ó¿ÚµØÖ·ÈçÏ£º
http://www.weather.com.cn/data/cityinfo/101190404.html
ÕâÑù·þÎñÆ÷¾Í»á°ÑÀ¥É½µ±Ç°µÄÌìÆøÐÅÏ¢ÒÔJSON¸ñʽ·µ»Ø¸øÎÒÃÇÁË£¬ÈçÏÂËùʾ£º {¡°weatherinfo¡±:
¡°city¡±:À¥É½,¡±cityid¡±:101190404,¡±temp1¡±:¡±21¡æ¡±,¡±temp2¡±:¡±9¡æ¡±,¡±weather¡±:¡±¶àÔÆתСÓꡱ£¬¡±img1¡±:¡±d1.gif¡±,¡±img2¡±:¡±n7.gif¡±,¡±ptime¡±:¡±11:00¡±}
ÆäÖÐcity±íʾ³ÇÊÐÃû£¬cityid±íʾ³ÇÊжÔÓ¦µÄÌìÆø´úºÅ£¬temp1ºÍtemp2±íʾÆøÎÂÊǼ¸¶Èµ½¼¸¶È£¬weather±íʾ½ñÈÕÌìÆøÐÅÏ¢µÄÃèÊö£¬img1ºÍimg2±íʾ½ñÈÕÌìÆø¶ÔÓ¦µÄͼƬ£¬ptime±íʾÌìÆø·¢²¼µÄʱ¼ä¡£
È·¶¨Á˲éѯµØÖ·Ö®ºó£¬½ÓÏÂÀ´¾Íµ÷ÓÃHttpUtilµÄsendHttpRequest()·½·¨À´Ïò·þÎñÆ÷·¢ËÍÇëÇó£¬ÏìÓ¦µÄÊý¾Ý»á»Øµ÷µ½onFinish()·½·¨ÖУ¬È»ºóÈ¥µ÷ÓÃUtilityµÄhandleProvincesResponse()·½·¨Ç£³¶µ½ÁËUI²Ù×÷£¬Òò´Ë±ØÐëÒªÔÚÖ÷Ïß³ÌÖе÷Óã¬ÕâÀï½èÖúÁËrunOnUiThread()·½·¨À´ÊµÏÖ´Ó×ÓÏß³ÌÇл»µ½Ö÷Ị̈߳¬ËüµÄʵÏÖÔÀíÆäʵҲÊÇ»ùÓÚÒì²½ÏûÏ¢´¦Àí»úÖƵġ£ÏÖÔÚÊý¾Ý¿âÖÐÒѾ´æÔÚÁËÊý¾Ý£¬Òò´Ëµ÷ÓÃqueryProvinces()¾Í»áÖ±½Ó½«Êý¾ÝÏÔʾµ½½çÃæÉÏ¡£
µ±Äãµã»÷ÁËij¸öÊ¡µÄʱºò½øÈëµ½ListViewµÄonClick()·½·¨ÖУ¬Õâ¸öʱºò»á¸ù¾Ýµ±Ç°µÄ¼¶±ðÀ´ÅжÏÊÇÈ¥µ÷ÓÃqueryCities()·½·¨»¹ÊÇqueryCounties()·½·¨£¬queryCities()·½·¨ÊÇÈ¥²éѯÊм¶Êý¾Ý£¬¶øqueryCounties()·½·¨ÊÇÈ¥²éѯÏؼ¶Êý¾Ý£¬ÕâÁ½¸ö·½·¨ÄÚ²¿µÄÁ÷³ÌºÍqueryProvinces()·½·¨»ù±¾Ïàͬ£¬²»Öظ´ËµÃ÷ÁË¡£
ÕâÀïÖØдonBackPressed()·½·¨À´¸²¸ÇĬÈÏBack¼üµÄÐÐΪ£¬»á¸ù¾Ýµ±Ç°µÄ¼¶±ðÀ´ÅжÏÊÇ·µ»ØÊм¶ÁÐ±í¡¢Ê¡¼¶ÁÐ±í¡¢»¹ÊÇÖ±½ÓÍ˳ö¡£
ÅäÖÃandroidMainifest.xmlÎļþ¡£Îª»î¶¯Ìí¼Ó·ÃÎÊÍøÂçȨÏÞ 11 Androidϵͳ¿Î³ÌÉè¼Æ ͼ3.6 Ê¡·Ý²Ëµ¥ ¿ÉÒÔ¿´µ½£¬È«¹úËùÓеÄÊ¡¼¶µ¥Î»¶¼³öÀ´ÁË£¬¼ÌÐø²é¿´Ê춵¥Î»£¬±ÈÈçµã»÷ºÚÁú½Èçͼ3.7Ëùʾ¡£ 12