• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    Android 中基于BaseAdapter 的適配器理解

    2015-12-10 12:23:02歐杵鄉(xiāng)
    電腦知識(shí)與技術(shù) 2015年26期
    關(guān)鍵詞:適配器

    摘要:基于Android應(yīng)用程序的開發(fā),系統(tǒng)界面不僅形式多樣,內(nèi)容上也越來越豐富,這些特點(diǎn)都得利于適配器的使用。BaseAdapter最大的特點(diǎn)是靈活而優(yōu)雅,開發(fā)人員可以輕松的構(gòu)造BaseAdapter并將其搭載到所需的控件中去,從而使系統(tǒng)呈現(xiàn)不同的效果。該文從BaseAdapter的構(gòu)造過程闡述了適配器的原理并通過程序?qū)崿F(xiàn)適配器搭載不同UI界面控件的過程。

    關(guān)鍵詞:Android;BaseAdapter;適配器

    中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)26-0085-03

    Based on BaseAdapter Adapter to Understand in the Android

    OU Chu-xiang

    (Guangzhou Railway Polytechnic, Guangzhou 510430, China)

    Abstract: Application development based-on Android not only presented in various forms, also enriched in its contents, all this can contributed to the use of an adapter. The most important feature of BsedAdapter is flexible and elegant, which can be easily constructed and implied to the needed controlers thus making a various appearing effect by the developers. The theory of construction of BaseAdapter and the programmed process of different UI interface controllers equipped with the adapter is proposed in this paper.

    Key words: Android; BaseAdapter; the adapter

    1 概述

    在Android軟件開發(fā)學(xué)習(xí)中,適配器模式(Adapter Pattern)是必須學(xué)習(xí)的。GOF(Gang of four)的《Design Pattern》中設(shè)配器模式定義:把一個(gè)類的接口變換成客戶端所期待的另一種接口,從而使原本因接口不匹配而無法再一起工作的兩個(gè)類能夠在一起工作[1]。理解這段定義,我們可以從手機(jī)充電方面去理解。手機(jī)充電器可以看作一個(gè)適配器,而220V交流電電源是一個(gè)類,手機(jī)是另一個(gè)類,手機(jī)需要的電壓是5.0V電壓,所以在充電時(shí)需要一個(gè)變壓器(充電器)將220V電壓轉(zhuǎn)換成手機(jī)所需的5.0V電壓,這正像是適配器所做的事。

    BaseAdapter在Android引用程序中應(yīng)用非常廣泛,它是一個(gè)基礎(chǔ)數(shù)據(jù)適配器,其用途是將一組雜亂的數(shù)據(jù)按照一定的規(guī)則應(yīng)用到ListView、Spinner、Gallery和GridView等UI界面組件中。也就是說,Adapter可以看作數(shù)據(jù)源和UI界面組件之間數(shù)據(jù)溝通的橋梁,如圖1所示:

    圖 1

    2 對(duì)原生Adapter的理解

    在開發(fā)過程中,程序員會(huì)經(jīng)常使用Adapter,因此谷歌公司給Android定義了一些原生的Adapter。這些原生的Adapter不僅負(fù)責(zé)提供數(shù)據(jù),而且還負(fù)責(zé)創(chuàng)建每一個(gè)條目的視圖,所以我們可以輕松的引用這些Adapter。原生的Adapter最有用、最常用的主要有以下兩個(gè):

    1)ArrayAdapter類

    ArrayAdapter類繼承了BaseAdapter類,利用JAVA泛型來定義綁定的數(shù)據(jù)類型對(duì)象,從而從數(shù)據(jù)類型對(duì)象的toString方法獲得相應(yīng)的值,用來創(chuàng)建和填充文本視圖。

    2)SimpleCursorAdapter類

    SimpleCursorAdapter類的基類同樣也是BaseAdapter類,它可以把一個(gè)布局中的視圖和(通常從Content Provider 查詢返回的)游標(biāo)的特定列綁定在一起[2]。

    3 創(chuàng)建一個(gè)自己的適配器

    既然前面講的ArrayAdapter類和SimpleCursorAdapter類的基類是BaseAdapter類,那么我們就可以依照這兩個(gè)類來編寫自己的Adapter。在繼承BaseAdapter類之后,我們需要實(shí)現(xiàn)getCount()、getItem()、getItemId()和getView()幾個(gè)方法。其中g(shù)etCount()返回列表項(xiàng)的長度;getItem()返回指定列表項(xiàng)數(shù)據(jù);getItemId()返回指定列表項(xiàng)在列表中的位置;getView()返回指定的列表視圖。具體代碼如下:

    public class StructureAdapter extends BaseAdapter

    {

    //初始化數(shù)據(jù)

    private List mList;

    private Context mContext;

    private LayoutInflater mInflater;

    public StructureAdapter(List list, Context context)

    {

    數(shù)據(jù)庫與信息管理
    大數(shù)據(jù)研究綜述
    高校虛擬實(shí)驗(yàn)室的數(shù)據(jù)中心建設(shè)研究
    北斗定位接收機(jī)數(shù)據(jù)云檢測平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)
    基于數(shù)據(jù)挖掘技術(shù)的五年制高職錄取
    數(shù)據(jù)挖掘技術(shù)在大學(xué)生心理測評(píng)數(shù)據(jù)中研究應(yīng)用
    網(wǎng)絡(luò)通訊及安全
    基于通訊工程的網(wǎng)絡(luò)服務(wù)質(zhì)量監(jiān)測和控制研究
    網(wǎng)頁中超鏈接的路徑
    基于策略優(yōu)化的計(jì)算機(jī)網(wǎng)絡(luò)管理技術(shù)研究
    搜索引擎應(yīng)對(duì)垃圾網(wǎng)頁的技術(shù)研究
    一種IMS 網(wǎng)絡(luò)的網(wǎng)絡(luò)安全監(jiān)控和防范處理方法
    模糊Petri 網(wǎng)及其在高鐵信號(hào)系統(tǒng)故障診斷的應(yīng)用
    網(wǎng)絡(luò)安全事件應(yīng)急處置與管理平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)
    基于MOOC 的學(xué)習(xí)支持研究
    電子信息資源開發(fā)利用方法的若干研究
    高?;旌显拼鎯?chǔ)的研究與實(shí)踐
    淺談校園APP 在高職院校學(xué)生活動(dòng)中的應(yīng)用
    Windows 8 系統(tǒng)中的USB 設(shè)備連接時(shí)間戳問題的研究
    關(guān)于云桌面技術(shù)和建設(shè)方案設(shè)計(jì)的探究
    “Linux 內(nèi)核定制”實(shí)驗(yàn)教學(xué)改革與探索
    網(wǎng)絡(luò)安全技術(shù)在企業(yè)管理中的應(yīng)用
    淺析中小學(xué)校園網(wǎng)站建設(shè)現(xiàn)狀及前景展望
    二維碼相關(guān)技術(shù)研究
    軟件設(shè)計(jì)開發(fā)
    基于web的高職院校在線考試系統(tǒng)探討
    食品生產(chǎn)線的計(jì)算機(jī)控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
    課程信息化平臺(tái)系統(tǒng)設(shè)計(jì)
    C 語言教學(xué)方法探討
    基于GIS 的車輛管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
    基于學(xué)生成績的教學(xué)質(zhì)量管理系統(tǒng)開發(fā)
    學(xué)分制環(huán)境下正方教務(wù)管理系統(tǒng)優(yōu)化與完善
    基于UML 圖書銷售系統(tǒng)分析與設(shè)計(jì)
    高職院校薪酬績效管理系統(tǒng)財(cái)務(wù)報(bào)表預(yù)審核機(jī)制研究
    PHP+Smarty 環(huán)境下Ajax 中文查詢的研究
    基于Android 平臺(tái)的評(píng)分系統(tǒng)
    排序算法的性能分析
    基于移動(dòng)平臺(tái)APP 測試
    基于Flash ActionScript 的漢字書寫軟件的設(shè)計(jì)與實(shí)現(xiàn)
    高校網(wǎng)站群建設(shè)中信息安全保障的探索
    Android 中基于BaseAdapter 的適配器理解
    數(shù)字校園中基于云計(jì)算的移動(dòng)學(xué)習(xí)平臺(tái)研究
    基于Android 的LBS 移動(dòng)就業(yè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
    手機(jī)遠(yuǎn)程控制多媒體系統(tǒng)的設(shè)計(jì)
    基于AIDE 的Android 程序開發(fā)教學(xué)設(shè)計(jì)
    淺析計(jì)算機(jī)二級(jí)培訓(xùn)中Vlookup 函數(shù)教學(xué)的策略與實(shí)踐
    基于Swing 的方塊游戲關(guān)鍵技術(shù)的研究與實(shí)現(xiàn)
    面向Android 系統(tǒng)安全的在線學(xué)習(xí)算法研究
    高校試題庫建設(shè)實(shí)踐與探討
    計(jì)算機(jī)教學(xué)與教育信息化
    基于應(yīng)用型人才培養(yǎng)的計(jì)算機(jī)專業(yè)課程體系研究
    云計(jì)算輔助教學(xué)調(diào)查分析
    中職學(xué)校開展移動(dòng)互聯(lián)網(wǎng)人才培養(yǎng)的探討
    電子類專業(yè)C語言程序設(shè)計(jì)課程教學(xué)改革的探索
    基于校企聯(lián)合辦學(xué)的計(jì)算機(jī)專業(yè)教學(xué)改革
    軟件工程課程的幾種教學(xué)方法探討?
    “游戲?qū)W(xué) 合作學(xué)習(xí)”在高師課堂教學(xué)中的應(yīng)用
    物聯(lián)網(wǎng)專業(yè)“RFID技術(shù)與應(yīng)用”課程改革與實(shí)踐
    論MOOC環(huán)境下高職生信息素養(yǎng)的培養(yǎng)
    Web Service在教學(xué)工作量管理系統(tǒng)中的應(yīng)用研究
    互聯(lián)網(wǎng)條件下教研模式探索
    “PHP程序設(shè)計(jì)”項(xiàng)目課程的開發(fā)與實(shí)踐
    提升C語言對(duì)土木工程專業(yè)輔助性作用教學(xué)實(shí)踐研究
    地方性院校《數(shù)據(jù)結(jié)構(gòu)》課程教學(xué)探索
    大學(xué)計(jì)算機(jī)基礎(chǔ)課程教學(xué)現(xiàn)狀與教學(xué)方法改革對(duì)策
    模擬電路實(shí)驗(yàn)教學(xué)的改革與實(shí)踐
    非計(jì)算機(jī)專業(yè)C語言程序設(shè)計(jì)“教學(xué)做考”一體化教學(xué)的探索
    人工智能及識(shí)別技術(shù)
    基于GPS 和GSM 的多功能智能拐杖設(shè)計(jì)
    基于灰度特征的非結(jié)構(gòu)化道路分割
    智慧酒店的開發(fā)與應(yīng)用
    約束最小二乘法實(shí)現(xiàn)退化圖像復(fù)原
    基于i.MX28的物聯(lián)網(wǎng)智能網(wǎng)關(guān)設(shè)計(jì)
    圖像處理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
    基于線陣CCD 的智能微小位移測量系統(tǒng)設(shè)計(jì)
    多媒體技術(shù)及其應(yīng)用
    基于三維全景的虛擬旅游系統(tǒng)開發(fā)研究
    基于FLASH 的多媒體交互課件設(shè)計(jì)與制作
    淺談微課教學(xué)設(shè)計(jì)
    高校多媒體教室管理運(yùn)行模式創(chuàng)新探究
    攝像機(jī)三維技術(shù)在AE 視頻特效中的應(yīng)用
    Simulink 及圖形用戶界面GUI 下的電子技術(shù)仿真平臺(tái)構(gòu)建探討
    關(guān)于數(shù)字電視系統(tǒng)嵌入式瀏覽器的運(yùn)用
    計(jì)算機(jī)工程應(yīng)用技術(shù)
    基于STC12C5A16S2的藥品通風(fēng)柜的設(shè)計(jì)
    一種基于負(fù)反饋的協(xié)同過濾推薦系統(tǒng)
    基于虛擬實(shí)驗(yàn)平臺(tái)溫度測控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
    面向高階調(diào)制的低復(fù)雜度MIMO 檢測技術(shù)
    基于FPGA 的液晶顯示屏的伽馬校正研究
    基于PLC 控制的垂直式回轉(zhuǎn)刀具庫管理系統(tǒng)設(shè)計(jì)
    柵欄效應(yīng)在連續(xù)周期信號(hào)譜分析中的研究
    基于HFSS 的微帶天線建模仿真研究
    基于52單片機(jī)智能手機(jī)充電器的應(yīng)用研究
    基于無線射頻脈沖無觸點(diǎn)開關(guān)的設(shè)計(jì)與實(shí)現(xiàn)
    基于16QAM/PPM 調(diào)制的OCDM—PON 系統(tǒng)分析
    基于粒子系統(tǒng)的噴泉模擬實(shí)現(xiàn)
    煙草企業(yè)運(yùn)營監(jiān)控體系研究
    基于OpenCV 的PCB 元件缺陷檢測
    虛擬現(xiàn)實(shí)技術(shù)在網(wǎng)絡(luò)博物館中的應(yīng)用與實(shí)現(xiàn)
    電子商務(wù)與電子政務(wù)
    基于物聯(lián)網(wǎng)、云計(jì)算的環(huán)境監(jiān)控體系設(shè)計(jì)及應(yīng)用
    我國電子信息工程的發(fā)展及有效保障
    基于物聯(lián)網(wǎng)技術(shù)的信息化應(yīng)用研究
    公司地址: 北京市西城區(qū)德外大街83號(hào)德勝國際中心B-11

    客服熱線:400-656-5456??客服專線:010-56265043??電子郵箱:longyuankf@126.com

    電信與信息服務(wù)業(yè)務(wù)經(jīng)營許可證:京icp證060024號(hào)

    Dragonsource.com Inc. All Rights Reserved

    icp

    super();

    this.mList = list;

    this.mContext = context;

    //獲取到當(dāng)前視圖壓力泵

    mInflater = LayoutInflater.from(mContext);

    }

    @Override

    public int getCount()

    {

    return mList.size();

    }

    @Override

    public Object getItem(int position)

    {

    return mList.get(position);

    }

    @Override

    public long getItemId(int position)

    {

    return position;

    }

    @Override

    public View getView(int position, View convertView, ViewGroup parent)

    {

    return mInflater.inflate(resource, null);

    }

    }

    在這里,我們應(yīng)該重點(diǎn)去完成getView()的代碼實(shí)現(xiàn),在實(shí)現(xiàn)代碼前,還需要去創(chuàng)建一個(gè)XML的試圖文件和一個(gè)數(shù)據(jù)類型對(duì)象模型的Java文件,XML也就是代碼中resource。這里創(chuàng)建一個(gè)簡單的視圖文件Item.xml,視圖中有一個(gè)ImageView和兩個(gè)TextView,布局如圖2:

    圖 2

    數(shù)據(jù)類型對(duì)象模型的Java文件可以創(chuàng)建一個(gè)ItemModel.java文件,代碼如下:

    public class ItemModel

    {

    public int ItemImageResId;

    public String ItemTitle;

    public String ItemContent;

    public ItemModel (int itemImageResId, String itemTitle, String itemContent)

    {

    super();

    ItemImageResId = itemImageResId;

    ItemTitle = itemTitle;

    ItemContent = itemContent;

    }

    }

    1)簡單實(shí)現(xiàn)視圖代碼

    在實(shí)現(xiàn)getView()里面代碼時(shí),我們不考慮其他情況的前提下,可以這樣實(shí)現(xiàn)代碼:

    public View getView(int position, View convertView, ViewGroup parent)

    {

    View view = mInflater.inflate(R.layout.item, null);

    ImageView imageView = (ImageView) view .findViewById(R.id.iv_image);

    TextView title = (TextView)view.findViewById(R.id.tv_title);

    TextView content = (TextView)view.findViewById(R.id.tv_content);

    ItemModel model= mList.get(position);

    imageView.setImageResource(model.ItemImageResId);

    title.setText(model.ItemTitle);

    content.setText(model.ItemContent);

    return view;

    }

    這種實(shí)現(xiàn)方式可以清晰的表述出適配器所綁定的視圖,利于初學(xué)者理解Adapter原理。但這種方式也有其弊端,因?yàn)樗鼪]有充分考慮到Android所運(yùn)行的性能環(huán)境,Android所運(yùn)行的環(huán)境中硬件資源是有限的,像上述代碼在運(yùn)行時(shí)會(huì)重復(fù)創(chuàng)建視圖資源,消耗大量的內(nèi)存資源。因此,我們必須優(yōu)化代碼,減少資源的消耗。其實(shí)在Android中有一個(gè)Recycler構(gòu)

    建,可以幫助優(yōu)化代碼。我們結(jié)合getView()方法來看Recycler的工作原理[3],如圖3:

    圖3

    從圖3中可以看出,Recycler構(gòu)建就是在滑動(dòng)屏幕后,當(dāng)Item1滑動(dòng)出屏幕,將其重新構(gòu)建視圖及賦值產(chǎn)生出Item8,達(dá)到重復(fù)利用的效果,減少硬件資源的消耗。

    2)優(yōu)化視圖實(shí)現(xiàn)代碼

    public View getView(int position, View convertView, ViewGroup parent)

    {

    if (convertView == null)

    {

    //view未被實(shí)例化,緩存池中沒有view的緩存,所以需要新建

    convertView = mInflater.inflate(R.layout.item, null);

    }

    ImageView imageView = (ImageView) convertView .findViewById(R.id.iv_image);

    TextView title = (TextView)convertView.findViewById(R.id.tv_title);

    TextView content = (TextView)convertView.findViewById(R.id.tv_content);

    ItemModel model= mList.get(position);

    imageView.setImageResource(model.ItemImageResId);

    title.setText(model.ItemTitle);

    content.setText(model.ItemContent);

    return convertView;

    }

    代碼實(shí)現(xiàn)雖然只多寫一段條件判斷代碼,但這段代碼才是整個(gè)getView()方法的核心。在條件判斷為真的時(shí)候,內(nèi)部去創(chuàng)建視圖,避免視圖的重復(fù)被創(chuàng)建。

    以上代碼在Eclipse、Android SDK4.1環(huán)境下開發(fā),在SDK4.3、SDK5.1等調(diào)試通過。

    4 結(jié)束語

    設(shè)計(jì)Adapter時(shí)需要有代碼重構(gòu)的思想,這也符合面向?qū)ο蟪绦蛟O(shè)計(jì)思想,針對(duì)特有的接口設(shè)計(jì)Adapter可以解決數(shù)據(jù)與UI界面組件不匹配的情況。在設(shè)計(jì)時(shí)也需要考慮資源的消耗問題,優(yōu)化我們的Adapter。

    參考文獻(xiàn):

    [1] GOF. Design Patterns: Elements of Reusable Object-Oriented Software[M]. Pearson Education,2000:95-96.

    [2] Reto Meier.Android 4 高級(jí)編程[M].3版.北京:清華大學(xué)出版社,2013:138.

    [3] Satya Komatineni,Dave MacLean.精通Android[M]. 北京:人民郵電出版社,2013:127-131.

    猜你喜歡
    適配器
    基于超聲相控陣的衛(wèi)星適配器缺陷檢測方法研究
    電子測試(2017年15期)2017-12-18 07:18:50
    適配器模式及其應(yīng)用
    電子測試(2017年11期)2017-12-15 08:57:45
    新型水文測驗(yàn)GPS適配器設(shè)計(jì)與應(yīng)用
    基于藍(lán)牙串口適配器的GPS接收機(jī)與AutoCAD的實(shí)時(shí)無線通信
    地礦測繪(2015年3期)2015-12-22 06:27:26
    美國麥格普公司新型M—LOK相機(jī)三腳架適配器
    輕兵器(2015年20期)2015-09-10 07:22:44
    航嘉“易佩”超薄筆記本電腦適配器上市
    凌源市| 平塘县| 丹寨县| 榆树市| 保靖县| 陆川县| 平江县| 阳朔县| 历史| 唐海县| 颍上县| 玛沁县| 宜昌市| 纳雍县| 共和县| 雅江县| 磴口县| 平凉市| 和顺县| 甘泉县| 翁牛特旗| 石林| 屏东市| 陆丰市| 广昌县| 东源县| 同江市| 东辽县| 花垣县| 阿坝县| 灵宝市| 赤峰市| 涿鹿县| 鄂伦春自治旗| 新巴尔虎右旗| 偃师市| 元谋县| 镇江市| 平昌县| 巧家县| 阿鲁科尔沁旗|