本發(fā)明涉及Android應(yīng)用領(lǐng)域,尤其涉及一種基于Android平臺(tái)的適配器優(yōu)化方法及系統(tǒng)。
背景技術(shù):
目前,Android應(yīng)用非常廣泛,其中Android原生的ListView(列表視圖)、GridView(網(wǎng)格視圖)等控件由于使用方便,所以其使用概率也非常高。如圖1所示,現(xiàn)有技術(shù)中的ListView/GridView等控件的加載流程是:先設(shè)置適配器Adapter;然后調(diào)用重繪方法,觸發(fā)ListView/GridView的onMeasure(測(cè)量)方法;最后調(diào)用適配器Adapter的getView(得到視圖),getCount(得到項(xiàng)的總個(gè)數(shù)),isEnable(布爾類型的函數(shù),可以編輯返回true或者false)等屬性方法,獲取相關(guān)數(shù)據(jù)。
但是,在某些特殊需求下,原生的控件功能并不能很好滿足用戶的實(shí)際需求。以ListView控件為例,現(xiàn)有技術(shù)還無(wú)法實(shí)現(xiàn)ListView控件中的某個(gè)或某幾個(gè)item(項(xiàng))不能獲取焦點(diǎn)。
因此,現(xiàn)有技術(shù)還有待于改進(jìn)和發(fā)展。
技術(shù)實(shí)現(xiàn)要素:
鑒于上述現(xiàn)有技術(shù)的不足,本發(fā)明的目的在于提供一種基于Android平臺(tái)的適配器優(yōu)化方法及系統(tǒng),旨在解決現(xiàn)有技術(shù)無(wú)法實(shí)現(xiàn)Android控件中的某個(gè)或某幾個(gè)item(項(xiàng))不能獲取焦點(diǎn)的問題。
本發(fā)明的技術(shù)方案如下:
一種基于Android平臺(tái)的適配器優(yōu)化方法,其中,包括:
步驟A、創(chuàng)建適配器類,所述適配器類繼承基礎(chǔ)數(shù)據(jù)適配器;
步驟B、定義一用于記錄不能獲取焦點(diǎn)的項(xiàng)位置信息的數(shù)組變量indexArray;
步驟C、在適配器類中設(shè)置不能獲取焦點(diǎn)的項(xiàng),并將相應(yīng)項(xiàng)的位置信息賦值給數(shù)組變量indexArray;
步驟D、循環(huán)遍歷不能獲取焦點(diǎn)的項(xiàng)位置信息,并將相應(yīng)項(xiàng)的isEnable()屬性設(shè)置為false,使得相應(yīng)的項(xiàng)不能獲取焦點(diǎn)。
所述的基于Android平臺(tái)的適配器優(yōu)化方法,其中,所述步驟D之后還包括:
當(dāng)焦點(diǎn)移動(dòng)到不能獲取焦點(diǎn)的項(xiàng)時(shí),控制焦點(diǎn)直接跳過(guò)相應(yīng)的項(xiàng),使焦點(diǎn)跳轉(zhuǎn)至下一個(gè)可獲取焦點(diǎn)的項(xiàng)。
所述的基于Android平臺(tái)的適配器優(yōu)化方法,其中,通過(guò)所述適配器類將數(shù)據(jù)映射到列表視圖控件或網(wǎng)格視圖控件上。
一種基于Android平臺(tái)的適配器優(yōu)化系統(tǒng),其中,包括:
適配器類創(chuàng)建模塊,用于創(chuàng)建適配器類,所述適配器類繼承基礎(chǔ)數(shù)據(jù)適配器;
數(shù)組變量定義模塊,用于定義一用于記錄不能獲取焦點(diǎn)的項(xiàng)位置信息的數(shù)組變量indexArray;
適配器類設(shè)置模塊,用于在適配器類中設(shè)置不能獲取焦點(diǎn)的項(xiàng),并將該項(xiàng)的位置信息賦值給數(shù)組變量indexArray;
循環(huán)遍歷模塊,用于循環(huán)遍歷不能獲取焦點(diǎn)的項(xiàng)位置信息,并將相應(yīng)項(xiàng)的isEnable()屬性設(shè)置為false,使得相應(yīng)的項(xiàng)不能獲取焦點(diǎn)。
所述的基于Android平臺(tái)的適配器優(yōu)化系統(tǒng),其中,還包括:
跳轉(zhuǎn)模塊,用于當(dāng)焦點(diǎn)移動(dòng)到不能獲取焦點(diǎn)的項(xiàng)時(shí),控制焦點(diǎn)直接跳過(guò)相應(yīng)的項(xiàng),使焦點(diǎn)跳轉(zhuǎn)至下一個(gè)可獲取焦點(diǎn)的項(xiàng)。
所述的基于Android平臺(tái)的適配器優(yōu)化系統(tǒng),其中,還包括:
數(shù)據(jù)映射模塊,用于通過(guò)所述適配器類將數(shù)據(jù)映射到列表視圖控件或網(wǎng)格視圖控件上。
有益效果:通過(guò)本發(fā)明的優(yōu)化方法,可實(shí)現(xiàn)限制列表視圖或網(wǎng)格視圖等控件中某個(gè)或者某幾個(gè)項(xiàng)獲取焦點(diǎn)的目的,從而滿足了Android應(yīng)用開發(fā)過(guò)程中的特殊需求。
附圖說(shuō)明
圖1為現(xiàn)有技術(shù)中加載ListView或GridView控件的流程圖。
圖2為本發(fā)明一種基于Android平臺(tái)的適配器優(yōu)化方法較佳實(shí)施例的流程圖。
圖3為本發(fā)明一種基于Android平臺(tái)的適配器優(yōu)化系統(tǒng)較佳實(shí)施例的結(jié)構(gòu)框圖。
具體實(shí)施方式
本發(fā)明提供一種基于Android平臺(tái)的適配器優(yōu)化方法及系統(tǒng),為使本發(fā)明的目的、技術(shù)方案及效果更加清楚、明確,以下對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
請(qǐng)參閱圖2,圖2為本發(fā)明一種基于Android平臺(tái)的適配器優(yōu)化方法較佳實(shí)施例的流程圖,如圖所示,其包括:
步驟S1、創(chuàng)建適配器類,所述適配器類繼承基礎(chǔ)數(shù)據(jù)適配器;
步驟S2、定義一用于記錄不能獲取焦點(diǎn)的項(xiàng)位置信息的數(shù)組變量indexArray;
步驟S3、在適配器類中設(shè)置不能獲取焦點(diǎn)的項(xiàng),并將相應(yīng)項(xiàng)的位置信息賦值給數(shù)組變量indexArray;
步驟S4、循環(huán)遍歷不能獲取焦點(diǎn)的項(xiàng)位置信息,并將相應(yīng)項(xiàng)的isEnable()屬性設(shè)置為false,使得相應(yīng)的項(xiàng)不能獲取焦點(diǎn)。
在本發(fā)明步驟S1中,首先自定義(創(chuàng)建)一個(gè)適配器(MyAdapter)類,該適配器類繼承BaseAdpter,BaseAdpter是一種基礎(chǔ)數(shù)據(jù)適配器,其作用是將一組數(shù)據(jù)傳到像ListView(列表視圖)或GridView(網(wǎng)格視圖)等UI顯示組件(或者稱為控件),而適配器類其在Android應(yīng)用程序中起著非常重要的作用,其是數(shù)據(jù)源和UI顯示組件之間的橋梁,UI顯示組件需要通過(guò)適配器類來(lái)獲取數(shù)據(jù)。
在步驟S2中,定義一個(gè)數(shù)組變量indexArray,所述數(shù)組變量indexArray的作用是記錄不能獲取焦點(diǎn)的item(項(xiàng))的位置信息。
即定義數(shù)組變量:private int[] indexArray。
在步驟S3中,在適配器類中設(shè)置不能獲取焦點(diǎn)的項(xiàng)。
具體如下:
自定義setItemDisabledIndex方法:
public void setItemDisabledIndex(int [] array){
indexArray = array ;
}
此方法對(duì)外開放,可用來(lái)設(shè)置不能獲取焦點(diǎn)的項(xiàng)的位置信息。
然后將這些不能獲取焦點(diǎn)的項(xiàng)的位置信息賦值給數(shù)組變量indexArray。
這樣在數(shù)組變量中就記錄了不能獲取焦點(diǎn)的項(xiàng)的位置信息。
在步驟S4中,循環(huán)遍歷不能獲取焦點(diǎn)的項(xiàng)位置信息,并將相應(yīng)項(xiàng)的isEnable()屬性設(shè)置為false,使得相應(yīng)的項(xiàng)不能獲取焦點(diǎn)。
具體如下:
重寫B(tài)aseAdpter中的isEnabled方法:
@Override
public boolean isEnabled(int position) {
// TODO Auto-generated method stub
if(indexArray!=null){
for(int i = 0 ; i < indexArray.length; i++){
if (position == indexArray[i]) {
return false ;
}
}
}
return super.isEnabled(position);
}
在上述方法中,由于遍歷了變量數(shù)組中不能獲取焦點(diǎn)的項(xiàng)位置信息,并依次將相應(yīng)的項(xiàng)設(shè)置為不能獲取焦點(diǎn),這樣在之后的焦點(diǎn)移動(dòng)過(guò)程中,這些位置上的項(xiàng)將不能獲取焦點(diǎn)。
進(jìn)一步,所述步驟S4之后還包括:
當(dāng)焦點(diǎn)移動(dòng)到不能獲取焦點(diǎn)的項(xiàng)時(shí),控制焦點(diǎn)直接跳過(guò)相應(yīng)的項(xiàng),使焦點(diǎn)跳轉(zhuǎn)至下一個(gè)可獲取焦點(diǎn)的項(xiàng)。
以列表視圖為例,例如第三個(gè)和第五個(gè)項(xiàng)不能獲取焦點(diǎn),那么當(dāng)焦點(diǎn)移動(dòng)到第三個(gè)項(xiàng)時(shí),由于第三個(gè)項(xiàng)無(wú)法獲取焦點(diǎn),所以只能跳轉(zhuǎn)至第四個(gè)項(xiàng),同樣的,當(dāng)焦點(diǎn)移動(dòng)到第五個(gè)項(xiàng)時(shí),由于第五個(gè)項(xiàng)無(wú)法獲取焦點(diǎn),所以只能跳轉(zhuǎn)至第六個(gè)項(xiàng)。
本發(fā)明中,通過(guò)所述適配器類將數(shù)據(jù)映射到列表視圖控件或網(wǎng)格視圖控件上。也就是本發(fā)明中,列表視圖控件或網(wǎng)格視圖控件可以通過(guò)本發(fā)明創(chuàng)建的適配器類來(lái)從Android系統(tǒng)中獲取數(shù)據(jù),并控制自身的項(xiàng)是否能夠獲取焦點(diǎn)。
本發(fā)明還提供一種基于Android平臺(tái)的適配器優(yōu)化系統(tǒng)較佳實(shí)施例,如圖3所示,其包括:
適配器類創(chuàng)建模塊100,用于創(chuàng)建適配器類,所述適配器類繼承基礎(chǔ)數(shù)據(jù)適配器;
數(shù)組變量定義模塊200,用于定義一用于記錄不能獲取焦點(diǎn)的項(xiàng)位置信息的數(shù)組變量indexArray;
適配器類設(shè)置模塊300,用于在適配器類中設(shè)置不能獲取焦點(diǎn)的項(xiàng),并將該項(xiàng)的位置信息賦值給數(shù)組變量indexArray;
循環(huán)遍歷模塊400,用于循環(huán)遍歷不能獲取焦點(diǎn)的項(xiàng)位置信息,并將相應(yīng)項(xiàng)的isEnable()屬性設(shè)置為false,使得相應(yīng)的項(xiàng)不能獲取焦點(diǎn)。
進(jìn)一步,系統(tǒng)還包括:
跳轉(zhuǎn)模塊,用于當(dāng)焦點(diǎn)移動(dòng)到不能獲取焦點(diǎn)的項(xiàng)時(shí),控制焦點(diǎn)直接跳過(guò)相應(yīng)的項(xiàng),使焦點(diǎn)跳轉(zhuǎn)至下一個(gè)可獲取焦點(diǎn)的項(xiàng)。
進(jìn)一步,系統(tǒng)還包括:
數(shù)據(jù)映射模塊,用于通過(guò)所述適配器類將數(shù)據(jù)映射到列表視圖控件或網(wǎng)格視圖控件上。
關(guān)于上述模塊的技術(shù)細(xì)節(jié)在前面的方法中已有詳述,故不再贅述。
綜上所述,通過(guò)本發(fā)明的優(yōu)化方法,可實(shí)現(xiàn)限制列表視圖或網(wǎng)格視圖等控件中某個(gè)或者某幾個(gè)項(xiàng)獲取焦點(diǎn),從而滿足了Android應(yīng)用開發(fā)過(guò)程中的特殊需求。
應(yīng)當(dāng)理解的是,本發(fā)明的應(yīng)用不限于上述的舉例,對(duì)本領(lǐng)域普通技術(shù)人員來(lái)說(shuō),可以根據(jù)上述說(shuō)明加以改進(jìn)或變換,所有這些改進(jìn)和變換都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護(hù)范圍。