標籤:listview 圖片 android volley
這篇文章翻譯自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.xml 、
list_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請求已經講過了。我們將解析來的MovieObject Storage Service在一個ArrayList中,調用notifyDataSetChanged()方法通知listview去更新我們的資料。
Android網路架構-Volley實踐 使用Volley打造自訂ListView