BaseAdapter 可以讓使用者自己定義許多種 View ,像是 Spinner, ListView, GridView等,而且可以重用View來節省資源:使用setTag將View存起來,之後就可以利用getTag將數據取出來
透過繼承 BaseAdapter,我們可以重新覆寫4個方法:
public int getCount();
取得 ListView 列表 Item 的數量。通常數量就是從建構子傳入的陣列或是集合大小。
public Object getItem(int position);
取得 ListView 列表於 position 位置上的 Item。position 通常是資料在陣列或是集合上的位置。
public long getItemId(int position);
取得 ListView 列表於 position 位置上的 Item 的 ID,一般用 position 的值即可。
public View getView(int position, View view, ViewGroup viewGroup);
通常會設定與回傳View 作為顯示在這個 position 位置的 Item 的 View。
基本上只要處理兩個方法 getCount跟getView即可。
getCount回傳我所宣告的String陣列st1的長度。
在getView之前,要先取得LayoutInflater
再來要先宣告一個類別viewHolder,用來存放list_content.xml內所有元件的內容
接著判斷view是否為空,如果為空就要對他進行初始化:
1,透過LayoutInflater將我們自訂的list_content.xml裝進去
2,new一個viewHolder出來,並將元件內容裝進去
3,透過setTag把viewHolder裝進去
如果view不為空,就利用getTag將數據讀出來
最後設定元件要放置的內容,並return view
完整MainActivity.java程式碼:
執行結果:
參考資料:賽肥膩膩、GiveMePasS's Android惡補筆記
Step1 在activity_main.xml中新增ListView
例如:Step2 在layout中新增list_content.xml,並排好想要的ListView item佈局
Step3 在MainActivity.java 新增一個類別BA並繼承BaseAdapter
透過繼承 BaseAdapter,我們可以重新覆寫4個方法:
public int getCount();
取得 ListView 列表 Item 的數量。通常數量就是從建構子傳入的陣列或是集合大小。
public Object getItem(int position);
取得 ListView 列表於 position 位置上的 Item。position 通常是資料在陣列或是集合上的位置。
public long getItemId(int position);
取得 ListView 列表於 position 位置上的 Item 的 ID,一般用 position 的值即可。
public View getView(int position, View view, ViewGroup viewGroup);
通常會設定與回傳View 作為顯示在這個 position 位置的 Item 的 View。
基本上只要處理兩個方法 getCount跟getView即可。
getCount回傳我所宣告的String陣列st1的長度。
在getView之前,要先取得LayoutInflater
再來要先宣告一個類別viewHolder,用來存放list_content.xml內所有元件的內容
接著判斷view是否為空,如果為空就要對他進行初始化:
1,透過LayoutInflater將我們自訂的list_content.xml裝進去
2,new一個viewHolder出來,並將元件內容裝進去
3,透過setTag把viewHolder裝進去
如果view不為空,就利用getTag將數據讀出來
最後設定元件要放置的內容,並return view
Step4 在MainActivity.java onCreate中使用BA這個 Adapter
完整MainActivity.java程式碼:
執行結果:
參考資料:賽肥膩膩、GiveMePasS's Android惡補筆記
留言
張貼留言