认为开发技术周报里面的内容挺不错的, 每次出来了都要去看看,还是能学到不少东西,也不知道有没有app 我也没去找,试着自己写一个吧,用一下以前没用过的技术。试着做做嘛,动手才能学得更快嘛。
本次抓取的Android开发技术周报网址为:http://androidweekly.cn/ 谢谢@脉脉不得语
运用到的一点技术为:RxJava RxAndroid Retrofit2 Jsounp .... 如何使用就靠自己百度Google了。我也是这样来的啊。
开发工具:AndroidStudio
其他:好像没了。
现在看到效果了,我们就来看下第一张图的实现,其实第一张图和第二张图的代码基本一样 只是解析的地方不同而已。
先看看目录结构:
就2个Activity
再来看看数据怎么获取的---:
这里运用了Retrofit2 和RxJava 实现数据获取 和运用Jsoup实现数据解析
private void getData(int pageNo) { KFZBAPI api= KFZBService.create(); api.getMainDirectory4Html(pageNo) .observeOn(Schedulers.io()) .subscribeOn(Schedulers.io()) .map(new Func1<String, List<DirectoryBean>>() { //转换 @Override public List<DirectoryBean> call(String s) { String html=s; html=html.replace("tag-androiddevspecialweekly", APPContent.ITEM_CLASSNAME); Document document= Jsoup.parse(html); Elements elements=document.getElementsByClass(APPContent.ITEM_CLASSNAME); return getData(elements); } }).observeOn(AndroidSchedulers.mainThread()) .subscribe(new Action1<List<DirectoryBean>>() { @Override public void call(List<DirectoryBean> directoryBeans) { listView.setAdapter(new DirectoryAdapter(MainActivity.this, directoryBeans, R.layout.item)); } }, new Action1<Throwable>() { @Override public void call(Throwable throwable) { textView.setText("throwable:" + throwable.toString()); } }); }
具体解析代码如下:
//解析数据 private List<DirectoryBean> getData(Elements elements) { if(elements!=null&&elements.size()>0){ for(int i=0;i<elements.size();i++){ Element tag_androiddevweekly_element=elements.get(i); Element tag_a_element=tag_androiddevweekly_element.child(0).child(0).child(0); //获取到a 标签 --header---->H2---->a String post_title=tag_androiddevweekly_element.child(0).child(0).text(); //title String post_url=tag_a_element.attr("href"); //链接 String post_excerpt=tag_androiddevweekly_element.child(1).text(); String post_date=tag_androiddevweekly_element.child(2).child(3).text(); DirectoryBean directoryBean=new DirectoryBean(); directoryBean.setPost_title(post_title); directoryBean.setPost_url(post_url.replace("/","")); directoryBean.setPost_excerpt(post_excerpt); directoryBean.setPost_date(post_date); listBean.add(directoryBean); } } return listBean; }
关键代码就这2段
就这样就完啦?是啊,这样就完了 感觉要讲的很多,却不知道从何处开始讲,但是代码也就这2块做了些工作。
具体的去github (https://github.com/zhangiqlin/kfzb)看看吧 嘿嘿。 有啥建议 不明白的可以给我说下, 没事的时候再改改,这个主要是为了练习一下没用过的库。