首页 > 移动平台 > 详细

我的一个小作品 android App ---校园咨询助手

时间:2015-08-15 18:14:16      阅读:225      评论:0      收藏:0      [点我收藏+]

技术分享   技术分享

技术分享技术分享

 软件主界面采用Fragment+ViewPager组成。在点开后将会自动对学校新闻页面使用URl类来抓取,然后对网页中的信息提取,使用WebView来loadData在主界面上面显示,

为了使用方便,软件会将最近一次抓取结果,写入文件中,在没有网络时,可以查看最近的缓存新闻。

在技术上用到了,Handler类,用于子线程与Activity通信,Intent基本使用,网络操作基本类URL,Fragmen+ViewPager支持滑动布局,调用系统分享功能等等。

项目结构:

技术分享

部分核心代码摘要:


// 列表解析
private boolean url_data_download(final String url) {
if (!isRunning) {
new Thread() {
@Override
public void run() {
// TODO 自动生成的方法存根
super.run();
isRunning = true;
String url_str;
String url_data = null;
try {
URL ncwuURL = new URL(url);
// 加"gbk",解决一bug
InputStreamReader in = new InputStreamReader(
ncwuURL.openStream(), "gbk");
BufferedReader reader = new BufferedReader(in);
while ((url_str = reader.readLine()) != null) {
url_data += url_str;

}

if (url_data != null) {
String url_datas[] = url_data
.split("<TD vAlign=top height=12 >");

String url_datass[] = url_datas[1]
.split("<TD vAlign=top height=10></TD>");

System.out.println(url_datass[0]);
datas = url_datass[0];
if (!isPaused) {

Message m = data_handler.obtainMessage();
Bundle resBund = new Bundle();
resBund.putString("result", "获取数据成功...");
m.setData(resBund);
m.what = 1;
data_handler.sendMessage(m);
}
} else {
Message m = data_handler.obtainMessage();
Bundle resBund = new Bundle();
resBund.putString("result", "获取数据失败...");
m.setData(resBund);
m.what = 0;
data_handler.sendMessage(m);
}
} catch (Exception e) {
e.printStackTrace();

}
}
}.start();
}
return false;
}

 

// 详情页解析
private boolean Detail_data_download(final String url) {
notice_state.setText("正在获取最新数据。。。");

new Thread() {
@Override
public void run() {
// TODO 自动生成的方法存根
super.run();

String url_str;
String url_data = null;
try {
URL ncwuURL = new URL(url);
// 加"gbk",解决一bug
InputStreamReader in = new InputStreamReader(
ncwuURL.openStream(), "gbk");
BufferedReader reader = new BufferedReader(in);
while ((url_str = reader.readLine()) != null) {
url_data += url_str;

}
} catch (MalformedURLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();

}
if (url_data != null) {
String url_datas[] = url_data
.split("BORDER-LEFT-STYLE: dotted; BORDER-RIGHT-STYLE: dotted; BORDER-TOP-STYLE: dotted\" color=\"#BCE5F5\"/></span>");
String url_datass[] = url_datas[1]
.split(" <td><table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">");
// System.out.println(url_datass[0]);
urldatasDetailsString = url_datass[0];
Message m = data_handler.obtainMessage();
Bundle resBund = new Bundle();
resBund.putString("result", "获取数据成功...");
m.setData(resBund);
m.what = 3;
data_handler.sendMessage(m);

} else {
Message m = data_handler.obtainMessage();
Bundle resBund = new Bundle();
resBund.putString("result", "获取数据失败...");
m.setData(resBund);
m.what = 4;
data_handler.sendMessage(m);
}
}
}.start();

return false;
}

 

 

public class MyPageAdapter extends FragmentStatePagerAdapter {

private List<Fragment> listFragment = new ArrayList<Fragment>();

public MyPageAdapter(FragmentManager fm) {
super(fm);
}

public void setListFragment(List<Fragment> listFragment) {
this.listFragment = listFragment;
}

@Override
public Fragment getItem(int arg0) {
return listFragment.get(arg0);
}

@Override
public int getCount() {
return listFragment.size();
}

}

我的一个小作品 android App ---校园咨询助手

原文:http://www.cnblogs.com/lzh-Linux/p/4732820.html

(0)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!