实例介绍
【实例简介】
这是一个通过抓取CSDN客户端的手机应用,代码开源,里面有一个自己搜集的工具库,里面集成了各种各样常用的工具类
【实例截图】
【核心代码】
private void loadDataFromNetwork(String urlStr) {
FinalHttp finalHttp = new FinalHttp();
finalHttp.get(urlStr, new AjaxCallBack<String>() {
//网络请求成功的回调方法,在此回调方法中,采用jsoup1.8.3解析请求返
//的网页数据
@Override
public void onSuccess(String s) {
super.onSuccess(s);
Document document = Jsoup.parse(s);
Element toplist
=document.select("div.list_item_new").get(0);
Elements titles = toplist.select("div.article_title");
Elements manages
= toplist.select("div.article_manage");
for (int i = 0; i < titles.size(); i ) {
Element a
= titles.get(i).getElementsByTag("a").get(0);
Element likeSpan
= manages.get(i).select("span.link_view").get(0);
Element commentSpan
= manages.get(i).select("span.link_comments").get(0);
Element timeSpan
= manages.get(i).select("span.link_postdate").get(0);
String title = a.text();
String href = "http://blog.csdn.net"
a.attr("href");
String readnum = likeSpan.text().substring(3, likeSpan.text().length() - 1);
String commnum = commentSpan.text().substring(3, commentSpan.text().length() - 1);
String time = timeSpan.text();
ArticleModel articleModel = new ArticleModel();
articleModel.setTitle(title);
articleModel.setArticleUrl(href);
articleModel.setCommentNum(commnum);
articleModel.setReadNum(readnum);
articleModel.setTime(time);
articleModels.add(articleModel);
}
mAdapter.setDatas(articleModels);
mAdapter.notifyDataSetChanged();
}
//网络请求失败的回调方法
@Override
public void onFailure(Throwable t, int errorNo, String strMsg) {
super.onFailure(t, errorNo, strMsg);
}
//正在请求网络数据的回调方法
@Override
public void onLoading(long count, long current) {
super.onLoading(count, current);
}
//实时进度的回调方法,主要用于更新进度显示
@Override
public AjaxCallBack<String> progress(boolean progress, int rate) {
return super.progress(progress, rate);
}
@Override
public void onStart() {
super.onStart();
}
});
}
//xutils3.0的网络请求,首先是设置请求参数,比如请求的URL等
RequestParams params=new RequestParams(urlStr);
x.http().get(params, new Callback.CommonCallback<String>() {
//请求成功的回调方法,解析请求返回的json数据并用JavaBean封装
@Override
public void onSuccess(String result) {
headlineModels = HeadlineParser.parserJson(result);
headlineAdapter.setDatas(headlineModels);
headlineAdapter.notifyDataSetChanged();
}
//请求发生错误的回调方法
@Override
public void onError(Throwable ex, boolean isOnCallback) {
}
//取消请求的回调方法
@Override
public void onCancelled(CancelledException cex) {
}
//请求完成的回调方法
@Override
public void onFinished() {
}
});
}
/* 初始化界面相关内容,初始化各个组件,获取到各个组件的句柄*/
@Override
protected void initView() {
setContentView(R.layout.activity_main);
fl_menu = (FrameLayout) findViewById(R.id.fl_menu);
layout_main = (FrameLayout) findViewById(R.id.layout_main);
mDrawerLayout = (DrawerLayout) findViewById(R.id.dl);
rl_menu_read = (RelativeLayout) findViewById(R.id.rl_menu_read);
rl_menu_blog = (RelativeLayout) findViewById(R.id.rl_menu_blog);
rl_menu_ask = (RelativeLayout) findViewById(R.id.rl_menu_ask);
rl_menu_collect = (RelativeLayout) findViewById(R.id.rl_menu_collect);
rl_menu_set = (RelativeLayout) findViewById(R.id.rl_menu_set);
//给各个组件设置事件监听
rl_menu_read.setOnClickListener(this);
rl_menu_blog.setOnClickListener(this);
rl_menu_ask.setOnClickListener(this);
rl_menu_collect.setOnClickListener(this);
rl_menu_set.setOnClickListener(this);
fragmentManager = getSupportFragmentManager();
setSelection(SELECTION_HEADLINE);
}
/* * 初始化数据*/
@Override
protected void initData() {
drawerToggle = new
ActionBarDrawerToggle(this, mDrawerLayout, R.string.open_drawer, R.string.close_drawer) {@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
}
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
}
};
mDrawerLayout.setDrawerListener(drawerToggle);
drawerToggle.syncState();
}
/**
* 初始化actionbar
*/
@Override
protected void initActionBar() {
mActionBar = getSupportActionBar();
mActionBar.setDisplayHomeAsUpEnabled(true);
mActionBar.setHomeButtonEnabled(true);
mActionBar.setTitle("头条");
mActionBar.setDisplayShowHomeEnabled(true);
}
/**
* 处理actionbar图标的点击事件,如果是drawerToggle的就不拦截,不是就拦截
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return drawerToggle.onOptionsItemSelected(item) | super.onOptionsItemSelected(item);
}
//事件的实现,判断点击的是哪一个事件,并作出相应的处理
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.rl_menu_read:
mDrawerLayout.closeDrawers();
setSelection(SELECTION_HEADLINE);
mActionBar.setTitle(R.string.menu_read);
break;
case R.id.rl_menu_blog:
mDrawerLayout.closeDrawers();
mActionBar.setTitle(R.string.menu_blog);
setSelection(SELECTION_BLOG);
break;
case R.id.rl_menu_ask:
mDrawerLayout.closeDrawers();
mActionBar.setTitle(R.string.menu_ask);
setSelection(SELECTION_ASK);
break;
case R.id.rl_menu_collect:
mDrawerLayout.closeDrawers();
mActionBar.setTitle(R.string.menu_collect);
setSelection(SELECTION_COLLECT);
break;
case R.id.rl_menu_set:
mDrawerLayout.closeDrawers();
mActionBar.setTitle(R.string.menu_set);
setSelection(SELECTION_SET);
break;
}
}
/**
* 设置relativelayout的选中项,改变样式和切换fragment
*每次用户点击,就会清除掉所有的样式,然后判断点击的位置,并为点击的位
*设置相应的样式,实现互斥的效果
*/
private void setSelection(int position) {
clearSelection();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
hideFragments(fragmentTransaction);
switch (position) {
case SELECTION_HEADLINE:
rl_menu_read.setBackgroundColor(getResources().getColor(R.color.check_menu_bg));
if (headlineFragment == null) {
headlineFragment = new HeadlineFragment();
fragmentTransaction.add(R.id.layout_main, headlineFragment);
}
showFragment(fragmentTransaction, headlineFragment);
break;
case SELECTION_BLOG:
rl_menu_blog.setBackgroundColor(getResources().getColor(R.color.check_menu_bg));
if (blogFragment == null) {
blogFragment = new BlogOsphereFragment();
fragmentTransaction.add(R.id.layout_main, blogFragment);
}
showFragment(fragmentTransaction, blogFragment);
break;
case SELECTION_ASK:
rl_menu_ask.setBackgroundColor(getResources().getColor(R.color.check_menu_bg));
if (askFragment == null) {
askFragment = new AskFragment();
fragmentTransaction.add(R.id.layout_main, askFragment);
}
showFragment(fragmentTransaction, askFragment);
break;
case SELECTION_COLLECT:
rl_menu_collect.setBackgroundColor(getResources().getColor(R.color.check_menu_bg));
if (collectFragment == null) {
collectFragment = new CollectFragment();
fragmentTransaction.add(R.id.layout_main, collectFragment);
}
showFragment(fragmentTransaction, collectFragment);
break;
case SELECTION_SET:
rl_menu_set.setBackgroundColor(getResources().getColor(R.color.check_menu_bg));
if (settingFragment == null) {
settingFragment = new SettingFragment();
fragmentTransaction.add(R.id.layout_main, settingFragment);
}
showFragment(fragmentTransaction, settingFragment);
break;
}
fragmentTransaction.commit();
}
/**
* 清除所有的选中状态
*/
private void clearSelection() {
rl_menu_read.setBackgroundColor(getResources().getColor(R.color.left_menu_bg));
rl_menu_blog.setBackgroundColor(getResources().getColor(R.color.left_menu_bg));
rl_menu_ask.setBackgroundColor(getResources().getColor(R.color.left_menu_bg));
rl_menu_collect.setBackgroundColor(getResources().getColor(R.color.left_menu_bg));
rl_menu_set.setBackgroundColor(getResources().getColor(R.color.left_menu_bg));
}
/**
* 隐藏所有的fragment
*/
private void hideFragments(FragmentTransaction fragmentTransaction) {
if (headlineFragment != null) {
fragmentTransaction.hide(headlineFragment);
}
if (blogFragment != null) {
fragmentTransaction.hide(blogFragment);
}
if (askFragment != null) {
fragmentTransaction.hide(askFragment);
}
if (collectFragment != null) {
fragmentTransaction.hide(collectFragment);
}
if (settingFragment != null) {
fragmentTransaction.hide(settingFragment);
}
}
/**
* 显示fragment
*/
private void showFragment(FragmentTransaction fragmentTransaction, Fragment baseFragment) {
if (baseFragment != null) {
fragmentTransaction.show(baseFragment);
}
}
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论