【Android】ListView 進階用法 BaseAdapter

前言

如果只是簡單的清單呈現可以利用ArrayAdapter、SimpleCursorAdapter、SimpleAdapter來達成你的目的,但如果要做到更複雜清單呈現就必須用BaseAdapter來客製化ListView,利用BaseAdapter能更彈性的控制ListView 每個Item的內容與樣式。

  • ArrayAdapter – ListView 簡易用法
  • SimpleCursorAdapter
  • SimpleAdapter – ListView 進階用法 -,簡易客製化ListView Item樣式
  • BaseAdapter (此篇) – ListView 進階用法,完整客製化ListView Item樣式

針對實作BaseAdapter這邊來個簡單步驟說明:

  1. 建立一個ListView Item的Layout
  2. 實作BaseAdapter,根據資料來改變ListView Item
  3. 結果,取得清單資料丟到BaseAdapter

1.建立ListItem Layout

在res/layout建立一個ListView Itme的樣板,命名為style_listview.xml(自行定義),可依照自求需求設計,這邊就簡單拉兩個TextView來實作。

2.實作BaseAdapter

這邊就是我們的重頭戲,先建立一個java類別命名為ViewAdapter.java(自行定義),將此類別繼承BaseAdapter,繼承BaseAdapter後會出現幾個方法

在開始實作BaseAdapter前請先想一下架構,我們ListView要input什麼樣的資料形態例如ArrayList、Map、Cursor…等,因為這關係到你的後需處理,以下範例input就用二維陣列來呈現,內容大概是顯示六都及政府所在如下。

  • 臺北
    • 信義區
  • 新北
    • 板橋區
  • 桃園
    • 桃園區
  • 臺中
    • 西屯區
  • 臺南
    • 安平區
    • 新營區
  • 高雄
    • 苓雅區
    • 鳳山區

想好架構後就直接看程式碼如何實作

3.結果

最後實作主程式把資料塞到BaseAdapter,看看執行結果如何

結果畫面

 

4 thoughts on “【Android】ListView 進階用法 BaseAdapter

  1. 請問要是我的佈局是 spinner, 下方接一個動態的ListView, 由spinner選取後,以一個按鈕將所選的顯示在動態的ListView, 為何我做出的結果是 item1:泡麵(spinner), 再按一次按鈕變 item2:泡麵(spinner), 但若選炒麵(spinner),會是 item3:炒麵(spinner),但前面的 item1:炒麵及 item2:炒麵,都變成一樣了,問題???請求達人幫忙

    1. 應該是你的OnItemClickListener程式有寫錯,但是看不到你的程式碼無法確定真正原因

  2. 你好,感謝你的分享使我更了解ListView運作
    同時也想請教;這個方法若是需要修改特定的item的話要從哪邊處理呢?
    謝謝

發表迴響