下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android中怎么實(shí)現(xiàn)適配器模式
今天就跟大家聊聊有關(guān)Android中怎么實(shí)現(xiàn)適配器模式,可能很多人都不太了解,為了讓大家更加了解,在下給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。1.意圖適配器模式,把一個(gè)類的接口變換成客戶端所期待的另一種接口,從而使原本不匹配而無(wú)法在一起工作的兩個(gè),類能夠在一起工作。適配器模式分為類適配器模式和對(duì)象適配器模式。關(guān)于類適配器模式,因?yàn)閖ava的單繼承,如果繼承一個(gè)類,另外的則只能是接口,需要手動(dòng)實(shí)現(xiàn)相應(yīng)的方法。熱門詞匯:類的適配器模式
對(duì)象的適配器模式缺省適配器模式源類
目標(biāo)接口2.結(jié)構(gòu)圖和代碼為了簡(jiǎn)明直接,我省略了相關(guān)的其他適配器,只以此兩個(gè)適配器為例。ListViews做為client,他所需要的目標(biāo)接口(target
interface)就是ListAdapter,包含getCount(),getItem(),getView()等幾個(gè)基本的方法,為了兼容List<T>,Cursor等數(shù)據(jù)類型作為數(shù)據(jù)源,我們專門定義兩個(gè)適配器來(lái)適配他們:ArrayAdapter和CursorAdapter。這兩個(gè)適配器,說(shuō)白了,就是針對(duì)目標(biāo)接口對(duì)數(shù)據(jù)源進(jìn)行兼容修飾。這就是適配器模式。其中BaseAdapter實(shí)現(xiàn)了如isEmpty()方法,使子類在繼承BaseAdapter后不需要再實(shí)現(xiàn)此方法,這就是缺省適配器,這也是缺省適配器的一個(gè)最明顯的好處。我們以最簡(jiǎn)單的若干個(gè)方法舉例如下,ListAdapter接口如下(,為了簡(jiǎn)單,我省略了繼承自Adapter接口):public
interface
ListAdapter
{
public
int
getCount();
Object
getItem(int
position);
long
getItemId(int
position);
View
getView(int
position,
View
convertView,
ViewGroup
parent);
boolean
isEmpty();
}抽象類BaseAdapter,我省略其他代碼,只列出兩個(gè)方法,以作示意:public
abstract
class
BaseAdapter
implements
ListAdapter,
SpinnerAdapter
{
//
...
...
public
View
getDropDownView(int
position,
View
convertView,
ViewGroup
parent)
{
return
getView(position,
convertView,
parent);
}
public
boolean
isEmpty()
{
return
getCount()
==
0;
}
}ArrayAdapter對(duì)List<T>進(jìn)行封裝成ListAdapter的實(shí)現(xiàn),滿足ListView的調(diào)用:public
class
ArrayAdapter<T>
extends
BaseAdapter
implements
Filterable
{
private
List<T>
mObjects;
//我只列出這一個(gè)構(gòu)造函數(shù),大家懂這個(gè)意思就行
public
ArrayAdapter(Context
context,
int
textViewResourceId,
T[]
objects)
{
init(context,
textViewResourceId,
0,
Arrays.asList(objects));
}
private
void
init(Context
context,
int
resource,
int
textViewResourceId,
List<T>
objects)
{
mContext
=
context;
mInflater
=
(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mResource
=
mDropDownResource
=
resource;
mObjects
=
objects;
//引用對(duì)象,也是表達(dá)了組合優(yōu)于繼承的意思
mFieldId
=
textViewResourceId;
}
public
int
getCount()
{
return
mObjects.size();
}
public
T
getItem(int
position)
{
return
mObjects.get(position);
}
public
View
getView(int
position,
View
convertView,
ViewGroup
parent)
{
return
createViewFromResource(position,
convertView,
parent,
mResource);
}
//
...
...
}我們就如此成功的把List<T>作為數(shù)據(jù)源以ListView想要的目標(biāo)接口的樣子傳給了ListView,同理CursorAdapter也是一模一樣的道理,就不寫(xiě)具體代碼了。
適配器本身倒是不難,但是提供了解決不兼容問(wèn)題的慣用模式。
關(guān)于什么時(shí)候使用適配器模式,大概有三種情況:
(1).
你想使用一個(gè)已經(jīng)存在的類,而它的接口不符合你的需求,這個(gè)在處理舊系統(tǒng)時(shí)比較常見(jiàn)。
(2).
你想創(chuàng)建一個(gè)可以復(fù)用的
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版餐飲業(yè)員工簡(jiǎn)易勞動(dòng)合同規(guī)范2篇
- 2025年度幫忙拆遷安置補(bǔ)償居間合同協(xié)議書(shū)范本2篇
- 2024汽車展場(chǎng)地租賃及展覽技術(shù)支持服務(wù)合同3篇
- 2024版借款合同中英文范本
- 2024年版茶樓管理與咨詢服務(wù)合同
- 2024招投標(biāo)與合同管理一體化解決方案實(shí)戰(zhàn)心得分享3篇
- 成都工業(yè)學(xué)院《包裝材料》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年度新疆二手房買賣及配套服務(wù)合同3篇
- 二零二五年度充電樁充電技術(shù)研發(fā)與應(yīng)用合同3篇
- 2024年股權(quán)轉(zhuǎn)讓委托書(shū)及持股合同精簡(jiǎn)版一
- 防止騷擾聲明
- 《金屬基增容導(dǎo)線技術(shù)條件+第2部分:鋁包殷鋼芯耐熱鋁合金絞線》
- 園藝植物栽培學(xué)智慧樹(shù)知到期末考試答案章節(jié)答案2024年浙江農(nóng)林大學(xué)
- 新部編人教版語(yǔ)文三年級(jí)下冊(cè)寫(xiě)字表字帖
- (正式版)SHT 3075-2024 石油化工鋼制壓力容器材料選用規(guī)范
- (新版)初級(jí)教練員資格理論考試題庫(kù)(濃縮500題)
- 村委會(huì)地震演練方案及流程
- 血栓彈力圖 (課件)
- 人行梯籠專項(xiàng)施工方案
- 死因監(jiān)測(cè)工作總結(jié)
- 邊防知識(shí)講座
評(píng)論
0/150
提交評(píng)論