本文內容
- 環境
- 項目結構
- 示範1:SimpleAdapter
- 示範2:BaseAdapter
- 示範3:customlazylist
- 示範4:customcompletelazylist
本文只給出示範概要,代碼太多,貼出來意義不大,自己下載調試一下,點擊此處下載。
本文通過四個樣本,循序漸進地示範,將歌曲列表載入到 ListView 控制項,歌曲列表,包括縮圖、歌手名、歌曲名等資訊,或存放在本地,或以 JSON 形式存放在網路。
環境
- Windows 2008 R2 64 位元
- Eclipse ADT V22.6.2,Android 4.4.3
- 三星 GT-I9008L,Android OS 2.2.2
為何真機版本如此低~唉,最近同事手機壞了,剛買了房子,銀行卡就剩1000塊,沒錢了,把我 Android 4.1 的手機借跑了~
項目結構
圖 1 項目結構-Java 包
圖 1 是該示範的相關 Java 包:
- com.example.listviewdemo 包,是主程式;
- com.example.listviewdemo.baseadapter 包,是 baseadapter 示範的主程式;
- com.example.listviewdemo.simpleadapter 包,是 simpleadapter 示範的主程式;
- com.example.listviewdemo.customlazylist 包,是 customlazylist 示範的主程式,以及繼承 BaseAdapte 類的自訂類 LazyAdapter,負責返回 ListView 的每行 View;
- com.example.listviewdemo.customcompletelazylist 包,是 customcompletelazylist 示範的主程式,以及繼承 BaseAdapte 類的自訂類 CompleteLazyList,負責返回 ListView 的每行 View;
- com.example.listviewdemo.data 包,是示範 1、2 中使用的測試資料;
- com.example.listviewdemo.utils 包,工具類都在這裡,包括檔案快取、記憶體緩衝、載入圖片、網路請求和流工具。
圖 2 項目結構-資源和頁面
- res/drawable-hdpi 是項目所需的圖片、表徵圖資源;
- res/layout 是程式介面,其中 main.xml 是主程式介面;item.xml 是 ListView 中每行的頁面,該頁面是這幾個示範通用的。
圖 3 程式主
示範1:SimpleAdapter
該示範直接利用 android.widget.SimpleAdapter,把歌曲列表(包括縮圖、歌手名字、歌曲名稱)添加到 ListView 控制項。
示範2:BaseAdapter
該示範利用一個更底層、功能更強大的 android.widget.BaseAdapter 類,重寫相應的方法,尤其是 public View getView(int position, View convertView, ViewGroup parent) 方法,把歌曲列表添加到 ListView 控制項。
示範 1 和示範 2,載入歌曲列表(包括縮圖、歌手名字、歌曲名稱)都在本地。下面兩個示範,縮圖都是通過網路擷取的,示範 3 的歌曲列表資訊存放在本地,通過串連獲得並緩衝圖片,顯示在 ListView 控制項,而示範 4 是通過網路獲得歌曲列表的 JSON,這種方式更普遍,在用戶端解析 org.json.JSONArray,獲得圖片並緩衝,顯示在 ListView 控制項。
另外,歌曲列表的地址是 http://files.cnblogs.com/liuning8023/Android_Music_Demo_json_array.xml,雖然是 XML 檔案,但內部是 JSON 格式,這對程式不會造成任何影響,cnblog 不讓上傳 .JSON 檔案。
總之,示範 1、2 與示範 3、4 相比,只是獲得歌曲列表的途徑不同,運行結果幾乎一樣。這四個示範是循序漸進的,也是本人的研究和思考的過程。
圖 4 下面四個示範的結果
第一個:simpleadapter 示範;第二個:baseadapter 示範;第三個:customlazylist 示範;第四個:customcompletelazylist 示範
示範3:customlazylist
該示範的歌曲列表儲存在本地,通過網路獲得縮圖。縮圖可以緩衝在外存和記憶體中。
示範4:customcompletelazylist
該示範的歌曲列表儲存在網路,通過網路獲得歌曲列表的 JSON 檔案,解析成 org.json.JSONArray,利用縮圖連結獲得縮圖,並緩衝在外存和記憶體中,顯示在 ListView 控制項。
別忘了,在 AndriodManifest.xml 添加允許 android 訪問網路和外存的小節。
下載 Demo