自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Android Adapter的體系

移動開發(fā) Android
在Android開發(fā)中列表的使用是十分常見的。Google對列表的封裝使列表既有顯示傳統(tǒng)文本列表的能力,也有加入了諸如選擇項、復選項等處理事件的能力。這里寫一些我對這個問題的理解。

AndroidAPI中,LIST和adapter都被放在了android.widget包內(nèi)。包內(nèi)的具體結構我這里先不展示了,主要側重列表和adapter。adapter的作用就是將要在列表內(nèi)顯示的數(shù)據(jù)和列表本身結合起來。列表本身只完成顯示的作用,其實他就是繼承自VIEWGROUP類。但是他又有一個獨特的函數(shù)就是setAdapter()就是完成了view和adapter的結合。adapter如同其本身含義,其實就是一個適配器,他可以對要顯示的數(shù)據(jù)進行統(tǒng)一的封裝,主要是將數(shù)據(jù)變成view提供給list。

我們先來看看Adapter的體系:

public interface Adapter----0層(表示繼承體系中的層次)

public interface ExpandableListAdapter---(無所謂層次因為沒有其他接口繼承實現(xiàn)它)

這是adapter的始祖,其他個性化的adapter均實現(xiàn)它并加入自己的接口。

public interface ListAdapter----1層

public interface SpinnerAdapter----1層

public interface WrapperListAdapter----2層(實現(xiàn)ListAdapter)

以上接口層面上的體系已經(jīng)完了??梢钥闯鰜碜鳛閣idgetview的橋梁adapter其實只分為2種:ListAdapter和SpinnerAdapter以及ExpandableListAdapter。也就是說所有widget也就是基于list和spinne與ExpandableList三種view形式的。

由于在實際使用時,我們需要將數(shù)據(jù)加入到Adapter,而以接口形式呈現(xiàn)的adapter無法保存數(shù)據(jù),于是Adapter就轉型為類的模式。

public abstract class BaseAdapter----2層(實現(xiàn)了ListAdapter和SpinnerAdapter)

以抽象類的形式出現(xiàn)構造了類型態(tài)下的頂層抽象,包容了List和Spinner

public class ArrayAdapter----3層

public class SimpleAdapter---3層

public class CursorAdapter----3層(CursorAdapter其后還有子類這里先不探討)

基本體系有了之后,讓我們看看頂層Adapter里有哪些方法(只列舉常用的):

  1. abstract Object getItem(int position)  
  2. abstract int getCount()  
  3. abstract long getItemId(int position)  
  4. abstract int getItemViewType(int position)  
  5. abstract View getView(int position,View convertVeiw,ViewGroup parent) 

以上是比較重要的方法,ArrayAdapter他們也是重新實現(xiàn)以上方法的。在實際的開發(fā)過程中,往往我們要自己做屬于自己的Adapter,以上方法都是需要重新實現(xiàn)的。這個在android提供的APIdemo例子中可以看到。  

【編輯推薦】

Android Adapter的體系

Android智能手機操作系統(tǒng)

Android開發(fā)實例詳解之IMF

官方文檔:Android應用程序運行的性能設計

責任編輯:zhaolei 來源: 網(wǎng)絡轉載
相關推薦

2014-12-17 09:57:01

AndroidAdapteViewHolder

2014-07-15 17:17:31

AdapterAndroid

2014-07-23 09:33:52

2009-04-29 09:06:18

C#設計模式Adapter

2013-12-26 17:08:36

Android開發(fā)Android應用自定義Adapter顯

2011-06-03 16:31:57

iphone Android WebOS

2010-02-24 09:18:49

WCF Adapter

2017-02-06 21:08:34

Android虛擬機體系結構

2012-08-20 10:48:09

2012-08-02 10:46:34

JavaAdapter模式

2012-02-23 09:51:58

虛擬化SRM桌面虛擬化

2016-12-29 10:32:06

2021-01-06 10:09:38

MySQL

2010-07-22 12:07:02

AIX TELNET

2009-06-26 15:58:28

EJB

2010-04-20 10:34:33

2010-04-26 10:01:45

Oracle認證

2009-08-07 10:20:38

WebSphere A

2021-05-12 14:11:09

云計算云原生

2018-12-05 10:10:40

HBase服務器架構
點贊
收藏

51CTO技術棧公眾號