Android ListView 和 Adapter 從本地/網路擷取歌曲列表

來源:互聯網
上載者:User

本文內容

  • 環境
  • 項目結構
  • 示範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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.