zoukankan      html  css  js  c++  java
  • Android网络框架-Volley实践 使用Volley打造自己定义ListView

    这篇文章翻译自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去更新我们的数据。


    

  • 相关阅读:
    关于linux内核模块Makefile的解析
    The Kernel Newbie Corner: Kernel Debugging with proc "Sequence" Files--Part 3
    The Kernel Newbie Corner: Kernel Debugging with proc "Sequence" Files--Part 2
    The Kernel Newbie Corner: Kernel Debugging Using proc "Sequence" Files--Part 1
    __KERNEL__ macro
    代码片段------find批量处理
    poll机制分析
    initrd映像文档的作用和制作
    为什么文件名要小写?
    CSS媒体查询 width VS device-width
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/7284231.html
Copyright © 2011-2022 走看看