这篇文章翻译自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. 类非静态成员的函数指针 的使用 Function pointer of a non-static member function of a class

    you can get the pointer of the method, but it has to be called with an object typedef void (T::*Meth ...

  2. win7配置两个tomcat(8 & 7)

    背景如下: 电脑中原先tomcat版本是tomcat8,现在要再在其中另配置一个tomcat7,原先tomcat8的配的端口是8089 步骤如下: 1.官网下载tomcat7压缩包解压 2.修改D:\ ...

  3. Backbone.js 1.0.0源码架构分析(一)

    Backbone.js 是javascript 语言中 首个实现MVC设计模式的类库,API接口方法重度依赖于underscore.js,DOM选择器则依赖于jQuery.js或者zepto.js. ...

  4. ASP.NET 推荐书籍

    ASP.NET 推荐书籍 1.首先推荐一本ASP.NET MVC的书籍 —— <Web开发新体验:ASP.NET 3.5 MVC架构与实战> [点评]:ASP.NET的MVC的书籍本来就不 ...

  5. Mac下忘记了phpAdmin设置的MySQL密码

    事情是这样的,我昨天配置完MySQL和PHP环境后,又配置了phpAdmin. 这本来是件好事,结果我看到phpAdmin提醒我说我的MySQL的Root帐号密码是空密码,于是我修改了下密码. 由于p ...

  6. Varnish 简介

    Varnish是高性能开源的反向代理服务器和HTTP缓存服务器 Varnish的功能与Squid服务器相似,都可以用来做HTTP缓存 Squid是从硬盘读取缓存的数据,而Varnish把数据存放在内存 ...

  7. Codeforces Round #265 (Div. 2) B. Inbox (100500)

    Over time, Alexey's mail box got littered with too many letters. Some of them are read, while others ...

  8. Atitit.antlr实现词法分析

    Atitit.antlr实现词法分析 1.1.  antlrworks-1.4.3.jar   wizard1 1.2. 词法的类型 id,int,float ,comment,str,char,wh ...

  9. atitit.浏览器插件解决方案----ftp插件 attilax 总结

    atitit.浏览器插件解决方案----ftp插件  attilax 总结 1. 界面概览  D:云盘同步文件夹p5p5f tp.demo.html1 2. 初始化1 3. 事实调用2 4. 参考2 ...

  10. Redis-ha(sentinel)搭建

    服务器描述:本次搭建是用来测试,所以是在一台服务器上搭建三个redis服务(一主两从) 服务角色 端口 Redis.conf名称 sentinel配置文件名称 sentinel端口 redis日志路径 ...