android的json解析部分都在包org.json下,主要有以下几个类:

JSONObject:可以看作是一个json对象,这是系统中有关JSON定义的基本单元,其包含一对儿(Key/Value)数值。它对外部(External:   应用toString()方法输出的数值)调用的响应体现为一个标准的字符串(例如:{"JSON": "Hello, World"},最外被大括号包裹,其中的Key和Value被冒号":"分隔)。其对于内部(Internal)行为的操作格式略微,例如:初始化一个JSONObject实例,引用内部的put()方法添加数值:new JSONObject().put("JSON", "Hello, World!"),在Key和Value之间是以逗号","分隔。Value的类型包括:Boolean、JSONArray、JSONObject、Number、String或者默认值JSONObject.NULL object 。

JSONStringer:json文本构建类 ,根据官方的解释,这个类可以帮助快速和便捷的创建JSON text。其最大的优点在于可以减少由于 格式的错误导致程序异常,引用这个类可以自动严格按照JSON语法规则(syntax rules)创建JSON text。每个JSONStringer实体只能对应创建一个JSON text。。其最大的优点在于可以减少由于格式的错误导致程序异常,引用这个类可以自动严格按照JSON语法规则(syntax rules)创建JSON text。每个JSONStringer实体只能对应创建一个JSON text。

JSONArray:它代表一组有序的数值。将其转换为String输出(toString)所表现的形式是用方括号包裹,数值以逗号”,”分隔(例如:     [value1,value2,value3],大家可以亲自利用简短的代码更加直观的了解其格式)。这个类的内部同样具有查询行为,     get()和opt()两种方法都可以通过index索引返回指定的数值,put()方法用来添加或者替换数值。同样这个类的value类型可以包括:Boolean、JSONArray、JSONObject、Number、String或者默认值JSONObject.NULL object。

JSONTokener:json解析类

JSONException:json中用到的异常

activity:

/*** Demo描述: * 1 利用Volley获取JSON数据* 2 利用Volley异步加载图片* 1 利用NetworkImageView加载网路图片* * 参考资料:* 1 http://blog.csdn.net/t12x3456/article/details/9221611* 2 http://blog.csdn.net/xyz_lmn/article/details/12063561* 3 http://blog.csdn.net/lfdfhl/article/details/12221875*   Thank you very much*/
public class MainActivity extends Activity { private ImageView mImageView; private NetworkImageView mNetworkImageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); init(); } private void init(){ mImageView=(ImageView) findViewById(R.id.imageView); mNetworkImageView=(NetworkImageView)findViewById(R.id.networkImageView); getJSONByVolley(); loadImageByVolley(); showImageByNetworkImageView(); } /*** 利用Volley获取JSON数据*/ private void getJSONByVolley() { RequestQueue requestQueue = Volley.newRequestQueue(this); String JSONDataUrl = "http://pipes.yahooapis.com/pipes/pipe.run?_id=giWz8Vc33BG6rQEQo_NLYQ&_render=json"; final ProgressDialog progressDialog = ProgressDialog.show(this, "This is title", "...Loading..."); JsonObjectRequest jsonObjectRequest = new JsonObjectRequest( Request.Method.GET,  JSONDataUrl,  null, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { System.out.println("response="+response); if (progressDialog.isShowing()&&progressDialog!=null) { progressDialog.dismiss(); } } },  new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError arg0) { System.out.println("sorry,Error"); } }); requestQueue.add(jsonObjectRequest); } /*** 利用Volley异步加载图片* * 注意方法参数:* getImageListener(ImageView view, int defaultImageResId, int errorImageResId)* 第一个参数:显示图片的ImageView* 第二个参数:默认显示的图片资源* 第三个参数:加载错误时显示的图片资源*/ private void loadImageByVolley(){ String imageUrl="http://avatar.csdn.net/6/6/D/1_lfdfhl.jpg"; RequestQueue requestQueue = Volley.newRequestQueue(this); final LruCache<String, Bitmap> lruCache = new LruCache<String, Bitmap>(20); ImageCache imageCache = new ImageCache() { @Override public void putBitmap(String key, Bitmap value) { lruCache.put(key, value); } @Override public Bitmap getBitmap(String key) { return lruCache.get(key); } }; ImageLoader imageLoader = new ImageLoader(requestQueue, imageCache); ImageListener listener = ImageLoader.getImageListener(mImageView, R.drawable.ic_launcher,R.drawable.ic_launcher); imageLoader.get(imageUrl, listener); } /*** 利用NetworkImageView显示网络图片*/ private void showImageByNetworkImageView(){ String imageUrl="http://avatar.csdn.net/6/6/D/1_lfdfhl.jpg"; RequestQueue requestQueue = Volley.newRequestQueue(this); final LruCache<String, Bitmap> lruCache = new LruCache<String, Bitmap>(20); ImageCache imageCache = new ImageCache() { @Override public void putBitmap(String key, Bitmap value) { lruCache.put(key, value); } @Override public Bitmap getBitmap(String key) { return lruCache.get(key); } }; ImageLoader imageLoader = new ImageLoader(requestQueue, imageCache); mNetworkImageView.setTag("url"); mNetworkImageView.setImageUrl(imageUrl,imageLoader); } }

XML布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <com.android.volley.toolbox.NetworkImageView android:id="@+id/networkImageView" android:layout_width="120dip" android:layout_height="120dip" android:layout_centerHorizontal="true" android:layout_marginTop="30dip" /> <ImageView android:id="@+id/imageView" android:layout_width="120dip" android:layout_height="120dip" android:layout_centerInParent="true" /> </RelativeLayout>

Android利用Volley异步加载(JSON和图片)完整示例相关推荐

  1. Android利用universal-image-loader异步加载大量图片完整示例

    MainActivity如下: package cc.testlistview; import java.util.ArrayList; import com.example.testlistview ...

  2. Android之ListView异步加载图片且仅显示可见子项中的图片

    折腾了好多天,遇到 N 多让人崩溃无语的问题,不过今天终于有些收获了,这是实验的第一版,有些混乱,下一步进行改造细分,先把代码记录在这儿吧. 网上查了很多资料,发现都千篇一律,抄来抄去,很多细节和完整 ...

  3. 浅谈Android中的异步加载之ListView中图片的缓存及优化三

    隔了很久没写博客,现在必须快速脉动回来.今天我还是接着上一个多线程中的异步加载系列中的最后一个使用异步加载实现ListView中的图片缓存及其优化.具体来说这次是一个综合Demo.但是个人觉得里面还算 ...

  4. Android实现ListView异步加载图片

    转: http://www.iteye.com/topic/685986 ListView异步加载图片是非常实用的方法,凡是是要通过网络获取图片资源一般使用这种方法比较好,用户体验好,下面就说实现方法 ...

  5. 使用EasyUI Tree异步加载JSON数据 生成树

    这几天因为工作需要,要做一个支持无限级的菜单. 我也是菜鸟一只,能想到的东西不多,所以用了Easy UI的tree组件. 不得不说,easyui确实很强大. 因为是无限级菜单,数据量可能有点大,所以考 ...

  6. android 实现异步加载图片,Android中ImageView异步加载图片类

    本源码是从网络找到经修改以方便直接调用感觉用着还可以 首先在项目中添加一个专门加载图片的类AsyncImageLoaderpackage com.demo.core; import java.io.I ...

  7. Android实现ListView异步加载图片总结

    参考自http://blog.csdn.net/wanglong0537/article/details/6334005# http://www.cnblogs.com/slider/archive/ ...

  8. android Gallery实现异步加载网络图片

    之前在网上找了很多都没有这方面的资料,大概的效果是当Gallery滑动时不下载图片,当Gallery滑动停止时加载当前页面图片,自己花了一点时间大概的实现了,如果各位有更好的意见欢迎说出来大家一起学习 ...

  9. android 排行榜中异步加载头像图片

    排行榜用的是RecyclerView显示,适配器使用BaseQuickAdapter,效果如下 1.RecycylerView适配器的使用 先引入依赖,然后新建类RegionList2Adapter继 ...

最新文章

  1. NXP I.MX6ULL 交叉编译工具链下载地址?
  2. git生成秘钥配置SSH公钥的简单方法
  3. 大一计算机专业,大一计算机专业学生
  4. 施工日志管理软件app_启用ERP装修管理软件的必要性
  5. select下拉框带模糊查询_从零学会SQL:简单查询 -第二节
  6. Java 数据库连接池的实现
  7. java实现modbus rtu协议与 modscan等工具
  8. 【解决Windows】修改win10默认开机启动动画
  9. 在网页中创建表格(1)
  10. windows c语言编程环境,windows7中c语言编程环境的搭建
  11. C++中优先队列priority_queue的基础用法
  12. 【飞桨PaddleSpeech语音技术课程】— 语音唤醒
  13. 【简约而不简单:神级代码的小秘密】| 第二章 栈
  14. Mycat(7):分片详解之枚举
  15. iOS二维码生成与识别
  16. Vue3答题问卷H5实战
  17. 北京交通大学2020计算机考研科目,2020北京交通大学软件工程考研初试科目、参考书目、复试线...
  18. 超级网搜 - SuperSearch - 2.1.2.4 版放出
  19. ubuntu系统下,navicat 过期
  20. 【产品经理学习笔记】Part 9 交互设计(1)

热门文章

  1. rpm升级时spec文件执行的流程
  2. CentOS下开启配置端口转发
  3. 初学java---第二课《接收控制台(console)输入的方法》
  4. FIneCMS /dayrui/libraries/Chart/ofc_upload_image.php Arbitrary File Upload Vul
  5. 远程debug Tomcat工程
  6. java JFrame 设置背景颜色无效的理解
  7. [Android Training视频系列] 8.1 Controlling Your App’s Volume and Playback
  8. 王家林 云计算分布式大数据Hadoop实战高手之路第七讲Hadoop图文训练课程:通过HDFS的心跳来测试replication具体的工作机制和流程...
  9. 《那些年啊,那些事——一个程序员的奋斗史》——104
  10. node.js 中的package.json文件怎么创建?