Android开发手记<开发自习助手>


       apk下载地址

              

      平时去自习的话,经常发现坐还没一个小时,发现这个班要上课,踮手踮脚地去找下一间。如果有个应用,掏出手机就能看到,全天都空的自习教室、全上午都没课的教室、全下午都没课的教室,该多好。于是,应用诞生了。features有:

     1)根据教务处信息,提供北京林业大学最新的空课室信息。

     2)提供空课室列表,分全上午没课,全下午没课,晚上没课课室列表。

     3)根据当前时间,智能推荐课室,比如下午1点,显示的全下午没课的课室。

     4)楼层低的课室排在列表前面。


简略总结一下开发这个应用学到的一些知识。总结对自己最有好处,如果能帮助别人那更好。

首先,教务处网站提供了空课室信息,如图。


折腾了两天后,就是上面那幅图的样子。

        一开始抓取用的是字符串的基本处理方法,先把所有数字得到,然后因为课室号都是三位数字的,然后舍去前面一些,就搞到了。

怎样得到从字符串得到所有的数字呢?

       

  像这样。

输入:782sjfk2382kjfsdlkfj382
输出:[782,2382,382]

"[^0-9]+"是正则表达式,[^0-9],表示匹配一个除了0到9的字符,+表示匹配前面的表达式一次或多次。看图就一下子明白了。

        

所以之后的split,分隔字符串,就得到数字的字符串数组。尤其值得一提的是这个“+”,因为网页里,非数字字符特别多。
若用[^0-9],

所以,上面的判断的语句没什么必要,即if判断可省略:

        

        这里的print也有一点神奇:

        

...表示不定长参数。作为从Lisp刚转过来学Android的人,对这个就感觉特别亲切。java语言的一大制订者Guy Steele精通很多门语言,也是Common Lisp的语言制订者。Lisp中:

       

      只要用一个&rest就行了。还有&optional参数,让某个参数是可选的。&key让某个参数成为关键字。&rest经常和Macro结合来用。

     

      后来学聪明了,用起了jsoup,加入Android的时候,要这样:

      

      放到libs文件夹下,再刷新一下。下面方式很出错,

      

      说是什么api更新后这样做不会自动把jsoup包囊括进来。

      看这个html:

      

      想获得所有的文本,可以用:

      

      一些代码片段:

      

      

     其中,src.attr("abs:src"),表明获得src的绝对地址。而上面src="y18.gif",是相对地址。

     上面片段改编自这里。 

     自定义标题及标题栏视图:

    

    判断是否联网:

         

    日期加法函数:

        

      计算相隔的天数:

       

      得到网页内容:

       

      使用bundle在Activity中传递数据:

       

      

     使用spinner:

     

    SharedPreferences:

        

       

 

      在另外一个Activiy中:


     更新ListView:

    


    总的来说,判断内容更新+jsoup网页抓取+Spinner+ListView。

    Github地址

智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告