下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
【移動應(yīng)用開發(fā)技術(shù)】Android中怎么實(shí)現(xiàn)適配器模式
今天就跟大家聊聊有關(guān)Android中怎么實(shí)現(xiàn)適配器模式,可能很多人都不太了解,為了讓大家更加了解,在下給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。1.意圖適配器模式,把一個類的接口變換成客戶端所期待的另一種接口,從而使原本不匹配而無法在一起工作的兩個,類能夠在一起工作。適配器模式分為類適配器模式和對象適配器模式。關(guān)于類適配器模式,因?yàn)閖ava的單繼承,如果繼承一個類,另外的則只能是接口,需要手動實(shí)現(xiàn)相應(yīng)的方法。熱門詞匯:類的適配器模式
對象的適配器模式缺省適配器模式源類
目標(biāo)接口2.結(jié)構(gòu)圖和代碼為了簡明直接,我省略了相關(guān)的其他適配器,只以此兩個適配器為例。ListViews做為client,他所需要的目標(biāo)接口(target
interface)就是ListAdapter,包含getCount(),getItem(),getView()等幾個基本的方法,為了兼容List<T>,Cursor等數(shù)據(jù)類型作為數(shù)據(jù)源,我們專門定義兩個適配器來適配他們:ArrayAdapter和CursorAdapter。這兩個適配器,說白了,就是針對目標(biāo)接口對數(shù)據(jù)源進(jìn)行兼容修飾。這就是適配器模式。其中BaseAdapter實(shí)現(xiàn)了如isEmpty()方法,使子類在繼承BaseAdapter后不需要再實(shí)現(xiàn)此方法,這就是缺省適配器,這也是缺省適配器的一個最明顯的好處。我們以最簡單的若干個方法舉例如下,ListAdapter接口如下(,為了簡單,我省略了繼承自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,我省略其他代碼,只列出兩個方法,以作示意: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對List<T>進(jìn)行封裝成ListAdapter的實(shí)現(xiàn),滿足ListView的調(diào)用:public
class
ArrayAdapter<T>
extends
BaseAdapter
implements
Filterable
{
private
List<T>
mObjects;
//我只列出這一個構(gòu)造函數(shù),大家懂這個意思就行
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;
//引用對象,也是表達(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也是一模一樣的道理,就不寫具體代碼了。
適配器本身倒是不難,但是提供了解決不兼容問題的慣用模式。
關(guān)于什么時候使用適配器模式,大概有三種情況:
(1).
你想使用一個已經(jīng)存在的類,而它的接口不符合你的需求,這個在處理舊系統(tǒng)時比較常見。
(2).
你想創(chuàng)建一個可以復(fù)用的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度戶外廣告設(shè)計(jì)合同樣本4篇
- 二零二五版房產(chǎn)中介擔(dān)保貸款服務(wù)條款合同范本3篇
- 2025年度新能源充電樁產(chǎn)品總代理合同4篇
- 2025年度城市生活垃圾焚燒發(fā)電廠建設(shè)項(xiàng)目合同4篇
- 二零二五版?zhèn)€體戶廚具店合伙人合作協(xié)議3篇
- 2025年度文化演出常年票務(wù)代理服務(wù)合同4篇
- 二零二五版科技公司股東股權(quán)分割與轉(zhuǎn)讓及管理層激勵協(xié)議3篇
- 2025版二手房公積金貸款買賣合同(含稅費(fèi)支付)4篇
- 二零二五年度施工現(xiàn)場大氣污染防治協(xié)議2篇
- 迎接汽車新時代
- 巖土工程勘察課件0巖土工程勘察
- 《腎上腺腫瘤》課件
- 2024-2030年中國典當(dāng)行業(yè)發(fā)展前景預(yù)測及融資策略分析報(bào)告
- 《乘用車越野性能主觀評價方法》
- 幼師個人成長發(fā)展規(guī)劃
- 2024-2025學(xué)年北師大版高二上學(xué)期期末英語試題及解答參考
- 動物醫(yī)學(xué)類專業(yè)生涯發(fā)展展示
- 批發(fā)面包采購合同范本
- 乘風(fēng)化麟 蛇我其誰 2025XX集團(tuán)年終總結(jié)暨頒獎盛典
- 2024年大數(shù)據(jù)分析公司與中國政府合作協(xié)議
- 一年級數(shù)學(xué)(上)計(jì)算題專項(xiàng)練習(xí)匯編
評論
0/150
提交評論