接着上篇Android中WebView加载本地Html,与JavaScript与Android方法相互传值,今天来一篇续集,为什么要来续集呢,感觉自己还有没有交代完的部分,于是在这里再次交代一下,在Android中我们需要将给复杂的数据传到Html页面,我们该怎么做?

大家作为一直搞android或IOS的小伙伴们,有好多对Html都了解不是太多,于是思考了一番,无非就是向Html页面传值吗?我就只会传字符串等基本的数据类型,遇到像List或Map中多层嵌套的复杂数据我该怎么办?我只会字符串,我只会字符串,我只会字符串,于是我是想到了JSON,JSON作为数据交换的一种方式,我是该选择JSON字符串来帮我完成复杂的数据交换,是因为Android或JavaScript中都JSON转换的方法,能够方便的数据转换。

上面我已经把问题抛了出来问题,解决的方法也已经给出。下面来一个简单的例子来说明一下实现方法。

案例说明,我要将一个List传到页面做一个表格,就这么简单。

1.创建一个Person对象

package com.lidong.androiddemo;/** * Created by lidong on 16/7/2 */public class Person {    public String name;   public String age;   public String uint;    public Person(String name, String age, String uint) {        this.name = name;        this.age = age;        this.uint = uint;    }}

2.创建MyObeject

package com.lidong.androiddemo;import android.content.Context;import android.util.Log;import android.webkit.JavascriptInterface;import com.google.gson.Gson;import java.util.ArrayList;import java.util.List;/** * Created by lidong on 16/6/29. */public class MyObject {    public static final String TAG = MyObject.class.getSimpleName() ;    private Context mContext;    private String data;    public MyObject(Context c,String data){        this.data = data;        mContext = c;    }    /** * 获取person字符串传Html * @return */    @JavascriptInterface    public String getData(){        List<Person> mlist = new ArrayList<>();        for (int i = 0; i <10 ; i++) {            mlist.add(new Person("Li"+i,i+"","com"+i));        }        Gson gson = new Gson();        String d  = gson.toJson(mlist);        Log.d(TAG, "getData: dddd"+d);        return d;    }}

3.MainActivity的实现

public class MainActivity extends AppCompatActivity {    private static final String TAG = MainActivity.class.getSimpleName();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        WebView webView = (WebView) findViewById(R.id.webView);        WebSettings settings = webView.getSettings();        //调用WebView关联的WebSettings中setJavaScriptEnable(true)方法。        settings.setJavaScriptEnabled(true);        webView.loadUrl("file:///android_asset/index.html");        //调用WebView关联的WebSettings中addJavaScriptInterface        webView.addJavascriptInterface(new MyObject(this,"dd"),"my");    }}

4.index.html的实现

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>测试Android Json传值</title>    <script src="http://cdn.hcharts.cn/jquery/jquery-1.8.3.min.js"></script>    <script src="http://cdn.hcharts.cn/highcharts/highcharts.js"></script>    <script type="text/javascript"> $(function(){ //通过暴露的my对象来获取数据 var data = my.getData(); //将json字符串转换为数组 var f = eval(data); //向表格填充数据  for(var i = 0;i<f.length;i++){ var en = f[i]; $("table").append("<tr><td>"+en.age+"</td><td>"+en.name+"</td><td>"+en.uint+"</td></tr>"); } }); </script></head><body>人员表<div >    <table id="table" border="1" bgcolor="#ffddff"></table></div></body></html>

这个案例基本上就四个步骤,通过这篇文章的学习妈妈在也不会担心android向html传复杂的数据了,谢谢学习

Android中WebView加载本地Html,与JavaScript与Android方法相互传值(续)_第1张图片

更多相关文章

  1. [Android]设置Activity为全屏显示的两种方法
  2. Android 导入多个外部静态链接库, 进行动态库编译方法( NDK)
  3. Android横竖屏切换时,不重新onCreate()的方法
  4. Android软键盘弹出不影响布局的方法
  5. Android 实现图片轮播的三种方法
  6. android 字符串加解密算法
  7. Android三种实现定时器的方法
  8. Android 强制停止RecyclerView滑动方法
  9. android原生SQLite数据库的使用

随机推荐

  1. Android中如何查看so崩溃的log
  2. cordova 常用监听事件
  3. Android常用开源库
  4. Android 自定义标签 和 自定义组件
  5. 解决webview中输入框完成输入隐藏键盘后
  6. Android 开发常用ADB命令集合
  7. Android使用代码实现关机/重启
  8. 【Android】EditText的特殊属性介绍
  9. android 百度地图定位功能实现
  10. android Gallery实现加载网络图片