这篇文章翻译自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. 使用ipmitool 命令添加IPMI 界面的SMTP邮件服务器地址

    目前要通过ipmitool工具在IPMI的界面上添加邮件服务器地址,该脚本如下 SMTP.sh #!/bin/bash ipmitool raw 0x32 0x78 0x01 0x01 0x00 0x ...

  2. 利用socket.io+nodejs打造简单聊天室

    代码地址如下:http://www.demodashi.com/demo/11579.html 界面展示: 首先展示demo的结果界面,只是简单消息的发送和接收,包括发送文字和发送图片. ws说明: ...

  3. cookie技术自动登录

    user public class User implements Serializable{ private String username; private String nick; privat ...

  4. PHP $_SERVER 变量

    $_SERVER 数组元素 $_SERVER 是一个包含诸如头信息(header).路径(path)和脚本位置(script locations)的数组.它是 PHP 中一个超级全局变量,我们可以在 ...

  5. mybatis想要在控制台显示sql语句配置文件

    在src目录下创建一个properties文件 配置内容如下 log4j.rootLogger=debug,stdout,logfile log4j.appender.stdout=org.apach ...

  6. Failure [INSTALL_FAILED_OLDER_SDK] [每件问题100块]

    问题描述:链接真机时候出现的问题 解决问题: minSdkVersion 10targetSdkVersion 22 修改这两个值

  7. BootStrap modal() 如何根据返回的HTML宽度自动调整宽度?

    首先声明,如果真的这么做了也就失去了 bootstrap 多分辨率适配的好处.bootstrap 的 modal 窗口能够自动在不同分辨率下用不同的宽度,这就是它的特色呢. 以默认大小的 modal ...

  8. mysql操作索引的sql语句

    创建索引 一:唯一索引alter table table_name add unique index_name(column_list); 例如:alter table users_game_task ...

  9. Tensorflow - Tutorial (7) : 利用 RNN/LSTM 进行手写数字识别

    1. 经常使用类 class tf.contrib.rnn.BasicLSTMCell BasicLSTMCell 是最简单的一个LSTM类.没有实现clipping,projection layer ...

  10. [华为机试练习题]5.IP地址推断有效性

    题目 推断输入的字符串是不是一个有效的IP地址 具体描写叙述: 请实现例如以下接口 boolisIPAddressValid(constchar* pszIPAddr) 输入:pszIPAddr 字符 ...