• 我的一个小作品 android App ---校园资讯助手


       

     软件主界面采用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();
    }

    }

  • 相关阅读:
    Java中IO流的总结
    Java常用集合体系以及相互区别
    TreeMap集合特点、排序原理
    HashMap集合
    TreeSet集合
    redis 数据类型详解 以及 redis适用场景场合
    You need tcl 8.5 or newer in order to run the Redis test
    PHP 获取二维数组中某个key的集合
    Linux 定时任务
    phpmailer邮件类
  • 原文地址:https://www.cnblogs.com/lzh-Linux/p/4732820.html
Copyright © 2020-2023  润新知