Android中的Adapter

一、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 aView for each item in the data set.

一個(gè)Adapter是AdapterView視圖與數(shù)據(jù)之間的橋梁,Adapter提供對(duì)數(shù)據(jù)的訪問(wèn),也負(fù)責(zé)為每一項(xiàng)數(shù)據(jù)產(chǎn)生一個(gè)相應(yīng)的View。

二、Adapter的繼承關(guān)系

有兩個(gè)adapter的體系

三、Adapter中的方法

在實(shí)際應(yīng)用中,adapter的繼承體系應(yīng)用的更為廣泛,所以,要對(duì)Adapter的方法有所了解

public interface Adapter {
  // 為了避免產(chǎn)生大量的View浪費(fèi)內(nèi)存,在Android中,AdapterView中的View是可回收的使用的。比方你有100項(xiàng)數(shù)據(jù)要顯示,而你的屏幕一次僅僅能顯示10條數(shù)據(jù),則
  // 僅僅產(chǎn)生10個(gè)View,當(dāng)往下拖動(dòng)要顯示第11個(gè)View時(shí),會(huì)把第1個(gè)View的引用傳遞過(guò)去,更新里面的數(shù)據(jù)再顯示,也就是說(shuō)View可重用,僅僅是更新視圖中的數(shù)據(jù)用于顯示新
  // 的一項(xiàng),如果一個(gè)視圖的視圖類型是IGNORE_ITEM_VIEW_TYPE的話,則此視圖不會(huì)被重用
  static final int IGNORE_ITEM_VIEW_TYPE = AdapterView.ITEM_VIEW_TYPE_IGNORE;

  static final int NO_SELECTION = Integer.MIN_VALUE;

  // 注冊(cè)一個(gè)Observer,當(dāng)Adapter所表示的數(shù)據(jù)改變時(shí)會(huì)通知它,DataSetObserver是一個(gè)抽象類,定義了兩個(gè)方法:onChanged與onInvalidated
  void registerDataSetObserver(DataSetObserver observer);

  // 取消注冊(cè)一個(gè)Observer
  void unregisterDataSetObserver(DataSetObserver observer);

  // 所表示的數(shù)據(jù)的項(xiàng)數(shù)
  int getCount();

  // 返回指定位置的數(shù)據(jù)項(xiàng)
  Object getItem(int position);

  // 返回指定位置的數(shù)據(jù)項(xiàng)的ID
  long getItemId(int position);

  // 表示全部數(shù)據(jù)項(xiàng)的ID是否是穩(wěn)定的,在BaseAdapter中默認(rèn)返回了false,如果是不穩(wěn)定的,在CursorAdapter中返回了true,Cursor中的_ID是不變的
  boolean hasStableIds();

  // 為每個(gè)數(shù)據(jù)項(xiàng)產(chǎn)生對(duì)應(yīng)的視圖
  View getView(int position, View convertView, ViewGroup parent);

  // 獲得對(duì)應(yīng)位置的這圖類型
  int getItemViewType(int position);

  // getView能夠返回的View的類型數(shù)量。(在HeaderViewListAdapter中能夠包括Header和Footer,getView能夠返回Header、Footer及Adapter
  // 中的視圖,但其getViewTypeCount的實(shí)現(xiàn)僅僅是調(diào)用了內(nèi)部Adapter的的getViewTypeCount,忽略了Header、Footer中的View
  // Type,不懂。
  int getViewTypeCount();

  //是否為空
  boolean isEmpty();
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容