文档章节

获取数据并显示在html界面

马金梦
 马金梦
发布于 2017/01/09 16:46
字数 733
阅读 22
收藏 0

package com.avicsafety.dangerous_chemicals;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.util.ArrayList;
import java.util.List;

import org.xutils.http.RequestParams;
import org.xutils.view.annotation.ContentView;
import org.xutils.view.annotation.ViewInject;

import android.support.v4.widget.DrawerLayout;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.avicsafety.conf.Configuration;
import com.avicsafety.conf.Constants;
import com.avicsafety.interfaces.OnGetInfoListener;
import com.avicsafety.interfaces.OnSearchResultListener;
import com.avicsafety.lib.tools.tools;
import com.avicsafety.model.M_LoginInfo;
import com.avicsafety.model.M_Whp_Sgal;
import com.avicsafety.model.P_Whp_Sgal;
import com.avicsafety.service.Info_AccidentCaseManager;
import com.avicsafety.service.LoginManager;

@ContentView(R.layout.activity_accident_info)
public class AccidentCaseInfoActivity extends BaseActivity {

    private String AcId;
    private Info_AccidentCaseManager accidentmanager;
    private P_Whp_Sgal model;
    private String header;
    private String bodyTemp;
    private String body = "";
    private String footer;

    @Override
    protected void InitializeComponent() {
        super.InitializeComponent();

        webView.setWebViewClient(new WebViewClient());
        webView.setWebChromeClient(new WebChromeClient());

        //实现Java和js之间的交互
        webView.getSettings().setJavaScriptEnabled(true);
        //解决界面显示乱码问题
        webView.getSettings().setDefaultTextEncodingName("UTF-8");
        webView.loadData("", "text/html", "UTF-8");

    }

    @Override
    protected void InitializeData() {

        // 获取assets文件夹中的html文件
        String[] html = this.getAssetsHtml("html/one.html").split(",,,,");
        // 将html文件分割成三部分分割符为,,,,,header,bodyTemp,footer
        header = html[0];
        bodyTemp = html[1];
        footer = html[2];

        accidentmanager = new Info_AccidentCaseManager();

        //接收上个界面传送过来的数据
        AcId = tools.getParam(oThis);
        RequestParams rp = getParams();

        //实现接口
        accidentmanager.getAccidentInfo(rp, new OnSearchResultListener() {

            @Override
            public void onSuccess(List _list) {

                 //关闭进度条
                progressDialog.dismiss();
                // 获取数据成功
                int i = 0;
                // 循环遍历数组(model要从新设置,获取的数据是不对的)
                for (Object o : _list) {
                    final int index = i;

                    //将遍历的数据类型强制类型转换成创建的Model类型
                    model = (P_Whp_Sgal) o;

                //将获取的html字符串数组和获取的数据拼接
                    body += bodyTemp.replace("{{title}}", model.getTitle())
                            .replace("{{content}}", model.getContent())
                            .replace("{{index}}", i + "");

                    // 动态加载TextView
                    TextView btn = new TextView(oThis);
                    btn.setId(index);
                    btn.setText((index + 1 + "")+"、" + model.getTitle());
                    btn.setTextSize(14);
                    btn.setPadding(0, 0, 0, 10);
                    btn.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View arg0) {
                            //实现抽屉中TextView的点击事件,跳到相应内容置顶
                            jump(index);
                        }
                    });

                    //将控件加载到界面上
                    ll_container.addView(btn);

                    i++;

                }
                // 将字符串数组拼接,加载html数据
                // 获取数据中的图片将其显示

                body = body.replace("/showImg", Constants.SERVER_ADDR
                        + "/showImg");
                try {
                    //将html一文件的形式写入到sd卡中 
                    File file = new File(Configuration.BASE_PATH
                            + File.separator + "temp.html");
                    if (!file.exists()) {
                        file.createNewFile();
                    }
                    writeTxtFile(header + body + footer, file);
                    Log.v("", file.getAbsolutePath());
                    // 加载html文件
                    webView.loadUrl("file:///" + file.getAbsolutePath());
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onFail(String message) {
                tools.showAlertTip(message, oThis);
            }
        });     

        //设置对话框的标题

        progressDialog.setMessage(getString(R.string.down_accident_list));

       //显示对话框
        progressDialog.show();

    }

    @Override
    protected void InitializeEvent() {
    }


    // 设置请求服务器的参数
    private RequestParams getParams() {
        M_LoginInfo loginInfo = LoginManager.getLoginInfo();
        String username = loginInfo.getUserName();
        String password = loginInfo.getPassword();

        RequestParams rp = new RequestParams(Constants.PHONE_ACCIDENT_SEACH);
        rp.setConnectTimeout(60000);
        rp.addQueryStringParameter("userName", username);
        rp.addQueryStringParameter("password", password);
        rp.addQueryStringParameter("classname", "Whp_sgal_nr");
        rp.addQueryStringParameter("sgalId", AcId);
        return rp;
    }

    private String getAssetsHtml(String path) {

        // 获取assets文件夹中html文件,已输入流的方式读取文件
        String txt = "";
        try {
            InputStream is = oThis.getAssets().open(path);
            int size = is.available();
            byte[] buffer = new byte[size];
            is.read(buffer);
            is.close();
            txt = new String(buffer);

        } catch (IOException e) {
            e.printStackTrace();
        }
        return txt;
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.book, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.action_list:
            openRightLayout();
            break;
        }
        return super.onOptionsItemSelected(item);
    }

    // 右边菜单开关事件
    public void openRightLayout() {
        if (drawerLayout.isDrawerOpen(accident_case_right_layout)) {
            drawerLayout.closeDrawer(accident_case_right_layout);
        } else {
            drawerLayout.openDrawer(accident_case_right_layout);
        }
    }

//右边抽屉的跳转事件

    public void jump(int n) {
        openRightLayout();
        webView.loadUrl("javascript:jump(" + n + ")");
    }

    //把文件的源码写到一个文件里
    public static boolean writeTxtFile(String content, File fileName)
            throws Exception {
        boolean flag = false;
        FileOutputStream o = null;
        try {
            o = new FileOutputStream(fileName);
            o.write(content.getBytes("UTF-8"));
            o.close();
            flag = true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return flag;
    }

    @ViewInject(R.id.drawerLayout)
    private DrawerLayout drawerLayout;// 抽屉布局

    @ViewInject(R.id.accident_case_right_layout)
    private RelativeLayout accident_case_right_layout;

    @ViewInject(R.id.webview)
    private WebView webView;

    @ViewInject(R.id.ll_container)
    private LinearLayout ll_container;
}
 

© 著作权归作者所有

马金梦
粉丝 0
博文 10
码字总数 5682
作品 0
沈阳
私信 提问
Android 拍照功能的开发

最近在Android上做了拍照功能的开发。 业务场景是:点击界面(HTML5)上的拍照按钮会调用拍照的JS API,获取其返回照片文件的存储路径、扩展名以及照片文件的Base64字符串,然后在界面上显示...

LeoXu
2016/08/16
27
0
(PHP+HTML+JavaScript+Css)一个简单爬虫的开发

开发一个爬虫,首先你要知道你的这个爬虫是要用来做什么的。我是要用来去不同网站找特定关键字的文章,并获取它的链接,以便我快速阅读。 按照个人习惯,我首先要写一个界面,理清下思路。 ...

许家瑞
2016/03/27
1K
2
WebView加载Github工程时直接进入README界面的几种方式

前言 在开发KeepGank的过程中遇到了一个问题,就是Github的手机版本网页进入时会是这个样子。 比如打开RxJava的网页会是这个样子,路径为: 而我希望用户点开我的链接后进入的直接是以下界面...

Anderson大码渣
2017/09/02
0
0
【Ovirt 笔记】仪表板的实现分析与整理

文前说明 作为码农中的一员,需要不断的学习,我工作之余将一些分析总结和学习笔记写成博客与大家一起交流,也希望采用这种方式记录自己的学习之旅。 本文仅供学习交流使用,侵权必删。 不用...

羽杰
2018/08/22
0
0
ionic3之发送请求的加载效果-yellowcong

加载组建的使用,会用到 的 组建。在发送请求到远程的服务器的时候,总是需要做一些等待的操作,不然用户的体验会非常的差劲,然而这种基础的东西,inoic早就为我们想到了,可以通过导入Loa...

yelllowcong
2018/03/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

rsync工具常用选项以及同步的两种方式

rsync -av /etc/passwd /tmp/1.txt #rsync的本机传输写法 rsync -av /tmp/1.txt 192.168.188.128:/tmp/2.txt #rsync的远程传输rsync格式rsync [OPTION] … SRC ......

林怡丰
今天
3
0
GatewayWorker 报错:stream_socket_server(): unable to connect to tcp://0.0.0.0:1238

GatewayWorker 报错:stream_socket_server(): unable to connect to tcp://0.0.0.0:1238 (Address already in use) 官方文档虽然有相同的问题,但是对我的问题没起作用…… 后面发现自己手贱...

wenzhizhong
昨天
3
0
REST接口

文章来源 https://zhuanlan.zhihu.com/p/28674721?group_id=886181549958119424 http://www.ruanyifeng.com/blog/2014/05/restful_api.html REST 对请求的约定 REST 用来规范应用如何在 HTTP......

Airship
昨天
5
0
Spring Cloud Config 统一配置中心

Spring Cloud Config 统一配置中心 一、统一配置中心 统一管理配置 通常,我们会使用配置文件来管理应用的配置。如一个 Spring Boot 的应用,可以将配置信息放在 application.yml 文件中,如...

非摩尔根
昨天
6
0
android ------ AAPT2 error: check logs for details解决方法

AAPT 是全称是 Android Asset Packaging Tool,它是构建 App,甚至是构建 Android 系统都必不可少的一个工具。它的作用是将所有资源文件压缩打包到Android APK 当中。我们在 Android SDK 目录...

切切歆语
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部