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,我們就自己創建一個。然後加入例如以下代碼
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