这篇文章翻译自Ravi Tamada博客中的Android Custom ListView with Image and Text using Volley

终于效果

这个ListView呈现了一些影视信息,每一行是一个影片的信息,每一行中有一张电影的图片,电影的名字、评分、类型、年份等信息。

1.json数据

我们通过解析json然后拿到数据,这个json数据包含json数组。每一个json数组中是一个json对象,json对象中包含了电影的图片url地址、标题、年份、评分、类型等信息

JSON Url:http://api.androidhive.info/json/movies.json

2.下载Volley库(volley.jar)

假设你第一次使用Volley框架,我建议你去我之前的文章看一下Android网络框架-Volley(一) 工作原理分析。然后到百度上下载一个volley.jar。加入到项目的lib目录里面

3.布局分析

我选择了RelativeLayout来实现这个布局,图片我们使用volley提供的NetworkImageView

如今我们来新建一个Android项目

4.创建一个新的项目

1.打开eclipse,点击File-->New-->Android Application Project。填好基本信息后,我们把包名命名为info.androidhive.customlistviewvolley

2.将volley.jar加入到项目的lib目录下

3.我们先把包建好。我们一共分为4个包:
adapter
, app, model 和 util  。

如今我们项目结构例如以下:

info.androidhive.customlistviewvolley.adater

info.androidhive.customlistviewvolley.app

info.androidhive.customlistviewvolley.model

info.androidhive.customlistviewvolley.util

4.打开res/values/colors.xml。

假设没有colors.xml,我们就自己创建一个。然后加入例如以下代码

5.打开res/values/dimens.xml。加入例如以下代码
6.在写jsva代码之前,我们先完毕UI部分,在res下新建一个drawable目录,在res/drawable中新建3个xml文件:list_row_bg.xml、list_row_bg_hover.xmllist_row_selector.xml

list_row_bg.xml -没有被点击时listview的样式
list_row_bg_hover.xml -被点击后listview的样式
list_row_selector.xml -切换两种样式的slector文件
7.打开activity_main.xml
加入listview
8.创建每一个item的布局文件list_row.xml
UI部分我们已经完毕了,接下来是java代码部分
9.在util包下新建LruBitmapCache.java  这个类是用来缓存图片的,这个类我们在之前文章中已经分析过了。參见Android网络框架-Volley(二) RequestQueue源代码分析以及建立一个RequestQueue
10.在app包下新建AppController.java  这个类是用来创建一个单例RequestQueue的,以及初始化一些volley核心对象
11.如今我们要在 AndroidManifest.xml  中注冊这个AppController,而且加入上网络权限
12.如今在model包下创建一个Movie实体类,解析完的json数据会保存到这个实体类中
13.在adapter包下新建一个
CustomListAdapter.java
  adapter会将item布局载入出来。而且将数据显示到listview上面
14.打开我们的MainActivity.java。

加入例如以下代码,我们使用JsonArrayRequest来发送请求,发送json请求我们在Android网络框架-Volley(四) 使用get和post方法发送json请求已经讲过了。我们将解析来的Movie对象存储在一个ArrayList中,调用notifyDataSetChanged()方法通知listview去更新我们的数据。




Android网络框架-Volley实践 使用Volley打造自己定义ListView的更多相关文章

  1. Android网络框架Volley(体验篇)

    Volley是Google I/O 2013推出的网络通信库,在volley推出之前我们一般会选择比较成熟的第三方网络通信库,如: android-async-http retrofit okhttp ...

  2. Android网络框架Volley(实战篇)

      之前讲了ym—— Android网络框架Volley(体验篇),大家应该了解了volley的使用,接下来我们要看看如何把volley使用到实战项目里面,我们先考虑下一些问题: 从上一篇来看 mQu ...

  3. Android网络框架Volley

    Volley是Google I/O 2013推出的网络通信库,在volley推出之前我们一般会选择比较成熟的第三方网络通信库,如: android-async-http retrofit okhttp ...

  4. ym—— Android网络框架Volley(终极篇)

    转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103).谢谢支持! 没看使用过Volley的同学能够,先看看Android网络框架Volley(体验篇)和 ...

  5. Android网络框架源码分析一---Volley

    转载自 http://www.jianshu.com/p/9e17727f31a1?utm_campaign=maleskine&utm_content=note&utm_medium ...

  6. Android 网络框架Volley的使用

    Volley简介 在平时的开发过程中,我们的应用几乎总是在和网络打交道, 在android下的网络编程一般都是基于Http协议的 ,常见的是HttpURLConnection和HttpClient 两 ...

  7. Android网络编程(三)Volley使用方法全解析

    相关文章 Android网络编程(一)HTTP协议原理 Android网络编程(二)HttpClient与HttpURLConnection 前言 Volley想必许多人都用过,为了建立网络编程的知识 ...

  8. 【从0到1】android网络框架的选型参考

    项目会使用到 socket tcp 级的网络访问,想选取一个使用较成熟异步网络框架, 提到的网络框架: 1. volley, 2. xutils. 3. android 4. netty, 5. mi ...

  9. Android网络框架比较

    今天,公司需要为一个安卓app选择一个合适的网络框架,具体我了解,主要的安卓网络框架有okhttp,retrofit,android-async-http,volley. 查找网上的资料,大致可以得到 ...

随机推荐

  1. mysql中如何统计某字段里某个字符的个数

    select * from order where length(order_num)-length(replace(order_num,'8','')) = 4

  2. 升级macOS Sierra系统 导致错误 app: resource fork, Finder information, or similar detritus not allowed

    前几天刚升级了macOS Sierra系统,顿时感觉入坑了,本来好好的项目报如下错误: app: resource fork, Finder information, or similar detri ...

  3. 自制MVC之工具类插件一

    1).BreakRomoteURLAttribute 提交或交互的URL数据是否来源于其它地方,站内提交,防止跨站 2). DataAttribute 取得post或get提交的数据.如果没有特殊设置 ...

  4. UNIX网络编程卷1 时间获取程序client UDP 协议无关

    本文为senlie原创.转载请保留此地址:http://blog.csdn.net/zhengsenlie /** * UDP.协议无关,调用 getaddrinfo 和 udp_client **/ ...

  5. atitit.提升研发效率的利器---重型框架与类库的区别与设计原则

    atitit.提升研发效率的利器---重型框架与类库的区别与设计原则 1. 框架的意义---设计的复用 1 1.1. 重型框架就是it界的重武器. 1 2. 框架 VS. 库 可视化图形化 1 2.1 ...

  6. 关于Qt半自动内存管理的思考及实验

    一时兴起,对Qt感了兴趣,决心想要研究一下. 按网上资料配好环境,Windows 7 64bit + Qt 5.3.1 + VS2010. 根据<C++ GUI Qt4 编程>这本书,写出 ...

  7. ado连接sql server

    //ado连接sql server //头文件加上以下这句. #import "C:\Windows\system\msado15.dll" no_namespace rename ...

  8. C++语言基础(21)-异常

    C++语言本身或者标准库抛出的异常都是 exception 的子类,称为标准异常(Standard Exception).你可以通过下面的语句来捕获所有的标准异常: try{ //可能抛出异常的语句 ...

  9. C#中Equals和==的比较

    一.值类型的比较 对于值类型来说  两者比较的都是”内容”是否相同,即 值 是否一样,很显然此时两者是划等号的. ; ; Console.WriteLine("i==j"+(i== ...

  10. PCI OP WiFi 測试(二):PCI对OP的要求

    PCI OP WiFi 測试(二):PCI对OP的要求 每次看PCI的文档.都一头雾水,本来就非常抽象.看英文就感觉更抽象.泛泛而谈的要求,看一次忘一次.仅仅好翻译成中文.没事就看看,知道指导思想. ...