1、下载数据来创建一个实体类

  1. class MyData
  2. {
  3. String imagepath;
  4. String title;
  5. String desc;
  6. public MyData(String imagepath, String title, String desc)
  7. {
  8. super();
  9. this.imagepath = imagepath;
  10. this.title = title;
  11. this.desc = desc;
  12. }
  13. }

2、AsyncTask数据载入及Json解析类

  1. class FileAsyncTask extends AsyncTask<String, Void, String>
  2. {
  3. @Override
  4. protected String doInBackground(String... params)
  5. {
  6. InputStream is = null;
  7. ByteArrayBuffer byteArrayBuffer = new ByteArrayBuffer(4000);
  8. try
  9. {
  10. URL url = new URL(params[0]);
  11. URLConnection openConnection = url.openConnection();
  12. //设置连接超时的时间
  13. openConnection.setConnectTimeout(3000);
  14. //数据读取超时的时间
  15. openConnection.setReadTimeout(3000);
  16. is = openConnection.getInputStream();
  17. byte[] buffer = new byte[1024];
  18. int len;
  19. while (-1 != (len = is.read(buffer)))
  20. {
  21. byteArrayBuffer.append(buffer, 0, len);
  22. }
  23. }
  24. catch (MalformedURLException e)
  25. {
  26. e.printStackTrace();
  27. }
  28. catch (IOException e)
  29. {
  30. // TODO Auto-generated catch block
  31. runOnUiThread(new Runnable()
  32. {
  33. public void run()
  34. {
  35. //设置载入异常时的控件,通常显示运行进度条
  36. }
  37. });
  38. e.printStackTrace();
  39. }
  40. finally
  41. {
  42. if (is != null)
  43. {
  44. try
  45. {
  46. is.close();
  47. }
  48. catch (IOException e)
  49. {
  50. // TODO Auto-generated catch block
  51. e.printStackTrace();
  52. }
  53. }
  54. }
  55. String res = new String(byteArrayBuffer.toByteArray(), 0,
  56. byteArrayBuffer.length());
  57. return res;
  58. }
  59. // 解析jsonArray数据
  60. @Override
  61. protected void onPostExecute(String result)
  62. {
  63. try
  64. {
  65. JSONArray jsonArray = new JSONArray(result);
  66. for (int i = 0; i < jsonArray.length(); i++)
  67. {
  68. JSONObject jsonObject = jsonArray.getJSONObject(i);
  69. String imagepath = jsonObject.getString("imagepath");
  70. String title = jsonObject.getString("title");
  71. String desc = jsonObject.getString("desc");
  72. MyData myData = new MyData(imagepath, title, desc);
  73. dataList.add(myData);//加入数据
  74. }
  75. myAdapter.notifyDataSetChanged();//通知适配器数据改变
  76. }
  77. catch (JSONException e)
  78. {
  79. // TODO Auto-generated catch block
  80. e.printStackTrace();
  81. }
  82. super.onPostExecute(result);
  83. }
  84. }

3、调用

  1. private ArrayList<MyData> dataList = new ArrayList<MainActivity.MyData>();//声明全局变量dataList
  2. FileAsyncTask fileAsyncTask = new FileAsyncTask();
  3. fileAsyncTask.execute("http://192.168.56.1:8080/service.txt");

版权声明:本文博客原创文章,博客,未经同意,不得转载。

Android数据加载和Json解析——蓝本的更多相关文章

  1. [转载] Android动态加载Dex机制解析

    本文转载自: http://blog.csdn.net/wy353208214/article/details/50859422 1.什么是类加载器? 类加载器(class loader)是 Java ...

  2. Android异步加载访问网络图片-解析json

    来自:http://www.imooc.com/video/7871 推荐大家去学习这个视频,讲解的很不错. 慕课网提供了一个json网址可以用来学习:http://www.imooc.com/api ...

  3. Android Volley和Gson实现网络数据加载

    Android Volley和Gson实现网络数据加载 先看接口 1 升级接口 http://s.meibeike.com/mcloud/ota/cloudService POST请求 参数列表如下 ...

  4. Android 图片加载框架Glide4.0源码完全解析(二)

    写在之前 上一篇博文写的是Android 图片加载框架Glide4.0源码完全解析(一),主要分析了Glide4.0源码中的with方法和load方法,原本打算是一起发布的,但是由于into方法复杂性 ...

  5. Android图片加载框架最全解析(八),带你全面了解Glide 4的用法

    本篇将是我们这个Glide系列的最后一篇文章. 其实在写这个系列第一篇文章的时候,Glide就推出4.0.0的RC版了.那个时候因为我一直研究的都是Glide 3.7.0版本,再加上RC版本还不太稳定 ...

  6. Android图片加载框架最全解析(三),深入探究Glide的缓存机制

    在本系列的上一篇文章中,我带着大家一起阅读了一遍Glide的源码,初步了解了这个强大的图片加载框架的基本执行流程. 不过,上一篇文章只能说是比较粗略地阅读了Glide整个执行流程方面的源码,搞明白了G ...

  7. Android图片加载框架最全解析(二),从源码的角度理解Glide的执行流程

    在本系列的上一篇文章中,我们学习了Glide的基本用法,体验了这个图片加载框架的强大功能,以及它非常简便的API.还没有看过上一篇文章的朋友,建议先去阅读 Android图片加载框架最全解析(一),G ...

  8. Android下设置ListView数据加载完成后执行layoutanimation

    今天使用android的volley框架写了一个简单的网络天气获取的demo. 承载数据的空间是ListView 因为是网络加载,必然先要设置ListView的默认数据,我设置的就是那个Loading ...

  9. Android之MVP模式实现登录和网络数据加载

    MVP简介 相信大家对 MVC 都是比较熟悉了:M-Model-模型.V-View-视图.C-Controller-控制器,MVP作为MVC的演化版本,也是作为用户界面(用户层)的实现模式,那么类似的 ...

随机推荐

  1. Visual Studio跨平台开发实战(4) - Xamarin Android基本控制项介绍

    原文 Visual Studio跨平台开发实战(4) - Xamarin Android基本控制项介绍 前言 不同于iOS,Xamarin 在Visual Studio中针对Android,可以直接设 ...

  2. C陷阱与缺陷之语法陷阱

    2.1理解函数声明 不论什么C变量的声明都由两部分组成:类型以及一组类似表达式的声明符号.比如 float f; 这个声明的含义是:当对其求值时,表达式f和g的类型为浮点数类.由于声 明符与表达式的相 ...

  3. QVector&lt;QString&gt; 显示器里面的动态数组元素QString和char *转变

    QVector类是一类提供了动态数组模板. QVector<T>是Qt普通容器类的一种. 它将自己的每个对象存储在连续的内存中.能够使用索引號来高速訪问它们.QList<T>. ...

  4. JavaScript语言基础知识10

    JavaScript中间if声明: <span style="font-size:18px;"><HTML> <HEAD> <TITLE& ...

  5. simplePagination API

    simplePagination API simplePagination.js 一个简单的jQuery分页插件,主题和Bootstrap支持CSS 3 分页button样式 "light- ...

  6. java基础---->Zip压缩的使用(转)

    java中提供了对压缩格式的数据流的读写.它们封装到现成的IO 类中,以提供压缩功能.下面我们开始java中压缩文件的使用. 目录导航: 关于压缩的简要说明 GZIP压缩文件的使用 ZIP压缩文件的使 ...

  7. Java乔晓松-android中获取图片的缩略图(解决OutOfMemoryError)内存溢出的Bug

    由于android获取图片过大是会出现内存溢出的Bug 07-02 05:10:13.792: E/AndroidRuntime(6016): java.lang.OutOfMemoryError 解 ...

  8. Java进阶 创建和销毁对象

    最近准备写点Javase的东西,希望可以帮助大家写出更好的代码. 1.给不可实例化的类提供私有构造器 比如:每个项目中都有很多工具类,提供了很多static类型的方法供大家使用,谁也不希望看到下面的代 ...

  9. MVC模型与FishiGUI应用层MVC型号

    MVC概要: MVC (Modal View Controler)M是指数据模型,V是指用户界面,C则是控制器. 使用MVC的目的是将M和V的实现代码分离,从而使同一个程序能够使用不同的表现形式.比方 ...

  10. lua学习笔记11:lua中的小技巧

    lua中的小技巧,即基础lua语言本身的特种,进行一个些简化的操作 一. 巧用or x = x or v 等价于: if not x then x = v end 假设x为nil或false,就给他赋 ...