1. 程式人生 > >Android網絡框架-Volley實踐 使用Volley打造自己定義ListView

Android網絡框架-Volley實踐 使用Volley打造自己定義ListView

str android項目 chan hive link con data net dap

這篇文章翻譯自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, modelutil 。

如今我們項目結構例如以下:

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