一、Adapter的介紹
An Adapter object acts as a bridge between an AdapterView and the underlying data for that view. The Adapter provides access to the data items. The Adapter is also responsible for making a
View for each item in the data set.
一個Adapter是AdapterView視圖與資料之間的橋樑,Adapter提供對資料的訪問,也負責為每一項資料產生一個對應的View。其作用如所示:
二、Adapter的繼承關係
有兩個adapter的體系,如下:
1、
2、
三、Adapter中的方法
在實際應用中,adapter的繼承體系應用的更為廣泛,所以,要對Adapter的方法有所瞭解
public interface Adapter {// 為了避免產生大量的View浪費記憶體,在Android中,AdapterView中的View是可回收的使用的。比如你有100項資料要顯示,而你的螢幕一次只能顯示10條資料,則// 只產生10個View,當往下拖動要顯示第11個View時,會把第1個View的引用傳遞過去,更新裡面的資料再顯示,也就是說View可重用,只是更新視圖中的資料用於顯示新// 的一項,如果一個視圖的檢視類型是IGNORE_ITEM_VIEW_TYPE的話,則此視圖不會被重用static final int IGNORE_ITEM_VIEW_TYPE = AdapterView.ITEM_VIEW_TYPE_IGNORE;static final int NO_SELECTION = Integer.MIN_VALUE;// 註冊一個Observer,當Adapter所表示的資料改變時會通知它,DataSetObserver是一個抽象類別,定義了兩個方法:onChanged與onInvalidatedvoid registerDataSetObserver(DataSetObserver observer);// 取消註冊一個Observervoid unregisterDataSetObserver(DataSetObserver observer);// 所表示的資料的項數int getCount();// 返回指定位置的資料項目Object getItem(int position);// 返回指定位置的資料項目的IDlong getItemId(int position);// 表示所有資料項目的ID是否是穩定的,在BaseAdapter中預設返回了false,假設是不穩定的,在CursorAdapter中返回了true,Cursor中的_ID是不變的boolean hasStableIds();// 為每一個資料項目產生相應的視圖View getView(int position, View convertView, ViewGroup parent);// 獲得相應位置的這圖類型int getItemViewType(int position);// getView可以返回的View的類型數量。(在HeaderViewListAdapter中可以包含Header和Footer,getView可以返回Header、Footer及Adapter// 中的視圖,但其getViewTypeCount的實現只是調用了內部Adapter的的getViewTypeCount,忽略了Header、Footer中的View// Type,不懂。int getViewTypeCount();//是否為空白boolean isEmpty();}