版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Android程序設(shè)計(jì)基礎(chǔ)第7章:列表與適配器本章內(nèi)容第1節(jié)Android列表用途第2節(jié)用ArrayAdapter顯示數(shù)據(jù)第3節(jié)用SimpleAdapter顯示數(shù)據(jù)第4節(jié)
列表項(xiàng)布局設(shè)計(jì)第5節(jié)
下拉視圖Spinner本章目標(biāo)熟悉Android列表的特點(diǎn)與用途。熟練掌握使用ArrayAdapter顯示列表數(shù)據(jù)。掌握掌握使用SimpleAdapter顯示列表數(shù)據(jù)。掌握列表項(xiàng)的布局設(shè)計(jì)手段。掌握下拉視圖Spinner的用法。第1節(jié)Android列表用途知識(shí)點(diǎn)預(yù)覽#知識(shí)點(diǎn)重點(diǎn)難點(diǎn)應(yīng)用說(shuō)明1列表控件的作用介紹列表控件的作用。2ListView控件√√介紹ListView控件的特征與用途。3Spinner控件√√介紹Spinner控件的特征與用途。4GridView控件√介紹GridView控件的特征與用途。5ExpandableListView控件√√√介紹ExpandableListView控件的特征與用途。列表控件是界面設(shè)計(jì)中一種常用的控件主要用于展現(xiàn)一系列數(shù)據(jù)項(xiàng)供用戶選擇或?yàn)g覽,比如:收件箱中的郵件標(biāo)題列表通訊錄中的聯(lián)系人列表注冊(cè)用戶時(shí)的城市選擇列表Android系統(tǒng)中提供了多種形式的列表展現(xiàn)單選列表多選列表可展開(kāi)列表列表控件的用途ListView控件用于以列表形式顯示數(shù)據(jù)ListView采用MVC模式將前端顯示和后端數(shù)據(jù)進(jìn)行了分離ListView裝載數(shù)據(jù)時(shí)并不使用ListView本身的方法通過(guò)指定一個(gè)Adapter對(duì)象給ListView提供數(shù)據(jù)ListView顯示效果如下ListView控件Spinner控件用于顯示一個(gè)下拉列表Spinner采用MVC模式將前端顯示和后端數(shù)據(jù)進(jìn)行了分離Spinner裝載數(shù)據(jù)時(shí)并不使用Spinner本身的方法通過(guò)指定一個(gè)Adapter對(duì)象給Spinner提供數(shù)據(jù)Spinner顯示效果如下Spinner控件GridView控件用于顯示一個(gè)表格GridView采用MVC模式將前端顯示和后端數(shù)據(jù)進(jìn)行了分離GridView裝載數(shù)據(jù)時(shí)并不使用GridView本身的方法通過(guò)指定一個(gè)Adapter對(duì)象給GridView提供數(shù)據(jù)GridView顯示效果如下GridView控件ExpandableListView控件是一個(gè)可展開(kāi)的ListView控件ExpandableListView是ListView的直接子類(lèi)ExpandableListView具備了ListView的基本特性展開(kāi)特性類(lèi)似于樹(shù)狀結(jié)構(gòu)或分組的效果ExpandableListView顯示效果如下ExpandableListView控件第2節(jié)用ArrayAdapter顯示數(shù)據(jù)知識(shí)點(diǎn)預(yù)覽#知識(shí)點(diǎn)重點(diǎn)難點(diǎn)應(yīng)用說(shuō)明1Android列表設(shè)計(jì)思想√
介紹Android列表的MVC設(shè)計(jì)思想。2適配器用途√√介紹適配器在列表控件中的作用。3用ArrayAdapter顯示數(shù)據(jù)√√√介紹使用ArrayAdapter顯示數(shù)據(jù)。4列表事件處理√√介紹如何處理列表事件。Android列表采用了MVC的設(shè)計(jì)模式用戶前端界面與后端的數(shù)據(jù)分離MVC設(shè)計(jì)模式的思想如下視圖模塊負(fù)責(zé)顯示用戶界面和響應(yīng)用戶動(dòng)作模型模塊負(fù)責(zé)管理維護(hù)數(shù)據(jù)控制器負(fù)責(zé)執(zhí)行業(yè)務(wù)邏輯Android列表設(shè)計(jì)思想View(視圖)Model(模型)Controller(控制器)查詢數(shù)據(jù)通知視圖選擇視圖執(zhí)行動(dòng)作維護(hù)數(shù)據(jù)適配器在列表控件中的用途適配器就是列表控件的模型為列表控件提供數(shù)據(jù)為列表項(xiàng)提供了顯示視圖適配器的基類(lèi)是android.widget.Adapter定義了數(shù)據(jù)提供者的標(biāo)準(zhǔn)提供了很多子類(lèi)實(shí)現(xiàn)了多種數(shù)據(jù)的提供手段android.widget.ArrayAdapterandroid.widget.SimpleAdapter適配器用途ArrayAdapter通過(guò)數(shù)組為列表控件提供數(shù)據(jù)構(gòu)造ArrayAdapter的對(duì)象第二個(gè)參數(shù)表示為列表控件提供列表項(xiàng)的顯示視圖第三個(gè)參數(shù)即為適配器所需要的數(shù)組數(shù)據(jù)使用ArrayAdapter對(duì)象作為列表控件的數(shù)據(jù)源用ArrayAdapter顯示數(shù)據(jù)String[]data=getResources().getStringArray(R.array.data);ArrayAdapter<String>adapter=newArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,data);ListViewlv=(ListView)findViewById(R.id.listview);lv.setAdapter(adapter);與列表相關(guān)的主要事件有兩個(gè)ItemSelected(列表項(xiàng)被選中時(shí)發(fā)生)通過(guò)列表控件的setOnItemSelectedListener()實(shí)現(xiàn)監(jiān)聽(tīng)I(yíng)temClick(單擊列表項(xiàng)時(shí)發(fā)生)通過(guò)列表控件的setOnItemClickListener()實(shí)現(xiàn)監(jiān)聽(tīng)I(yíng)temLongClick(長(zhǎng)按列表項(xiàng)時(shí)發(fā)生)通過(guò)列表控件的setOnItemLongClickListener()實(shí)現(xiàn)監(jiān)聽(tīng)列表事件處理ListView示例演示演示ListView示例第3節(jié)用SimpleAdapter顯示數(shù)據(jù)知識(shí)點(diǎn)預(yù)覽#知識(shí)點(diǎn)重點(diǎn)難點(diǎn)應(yīng)用說(shuō)明1SimpleAdapter概述√√介紹SimpleAdapter的基本構(gòu)成。2列表數(shù)據(jù)結(jié)構(gòu)√介紹列表項(xiàng)復(fù)雜數(shù)據(jù)的構(gòu)建與存儲(chǔ)。3顯示復(fù)雜列表數(shù)據(jù)√介紹復(fù)雜數(shù)據(jù)對(duì)應(yīng)的顯示視圖設(shè)計(jì)。
SimpleAdapter可以用于顯示復(fù)雜數(shù)據(jù)SimpleAdapter可以在列表的一項(xiàng)中提供和顯示多個(gè)數(shù)據(jù)SimpleAdapter需要自定義數(shù)據(jù)結(jié)構(gòu)和顯示視圖布局SimpleAdapter的構(gòu)造需要5個(gè)參數(shù)context:
為使用SimpleAdapter的上下文data:為用于顯示的具體數(shù)據(jù)這是一個(gè)map對(duì)象的list,list中的每一項(xiàng)是一個(gè)mapmap中的每一項(xiàng)對(duì)應(yīng)著列表項(xiàng)顯示視圖中的一個(gè)內(nèi)容resource:用于顯示具體數(shù)據(jù)的布局資源from:data數(shù)據(jù)中map所包含的每一個(gè)項(xiàng)中key的名字的數(shù)組to:map中的每一個(gè)key的內(nèi)容所對(duì)應(yīng)的顯示視圖的資源id的數(shù)組SimpleAdapter概述使用SimpleAdapter顯示復(fù)雜數(shù)據(jù)需要設(shè)計(jì)好數(shù)據(jù)內(nèi)容不過(guò)視圖如何復(fù)雜,列表的每一項(xiàng)內(nèi)容由多個(gè)數(shù)據(jù)字段構(gòu)成在提供數(shù)據(jù)的時(shí)候,需要為每一個(gè)數(shù)據(jù)字段設(shè)計(jì)一個(gè)名字字段名字和具體數(shù)據(jù)構(gòu)成鍵值對(duì),存放在map對(duì)象中列表數(shù)據(jù)結(jié)構(gòu)Stringfrom[]=newString[]{"itemlabel","itemtext"};LinkedList<HashMap<String,Object>>datas=newLinkedList<HashMap<String,Object>>();for(inti=0;i<itemlabels.length;i++){HashMap<String,Object>map=newHashMap<String,Object>();map.put(from[0],itemlabels[i]);map.put(from[1],itemtexts[i]);
datas.add(map);}顯示復(fù)雜列表首先需要為復(fù)雜數(shù)據(jù)結(jié)構(gòu)定義用于顯示的列表項(xiàng)布局顯示復(fù)雜列表<LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"><ImageViewandroid:id="@+id/itemimage"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/sample_0"/><TextViewandroid:id="@+id/itemtext"android:layout_width="match_parent"android:layout_height="match_parent"android:textSize="16sp"/></LinearLayout>顯示復(fù)雜列表然后在ListView中使用SimpleAdapter顯示復(fù)雜列表2intto[]=newint[]{R.id.itemimage,R.id.itemtext};SimpleAdapteradapter=newSimpleAdapter(MainActivity.this,datas,R.layout.simple_item,from,to);ListViewlv=(ListView)findViewById(R.id.listview);lv.setAdapter(adapter);SimpleAdapter演示演示使用SimpleAdapter第4節(jié)列表項(xiàng)布局設(shè)計(jì)知識(shí)點(diǎn)預(yù)覽#知識(shí)點(diǎn)重點(diǎn)難點(diǎn)應(yīng)用說(shuō)明1系統(tǒng)內(nèi)置的列表項(xiàng)
介紹常見(jiàn)的系統(tǒng)內(nèi)置列表項(xiàng)布局。2列表項(xiàng)常見(jiàn)規(guī)劃設(shè)計(jì)介紹常見(jiàn)的列表項(xiàng)設(shè)計(jì)方案。3創(chuàng)建自定義適配器√√√介紹創(chuàng)建自定義適配器的過(guò)程。4實(shí)現(xiàn)動(dòng)態(tài)顯示數(shù)據(jù)√√介紹使用自定義適配器實(shí)現(xiàn)動(dòng)態(tài)改變數(shù)據(jù)。Android為列表控件提了一些基本的列表項(xiàng)布局布局基本都在android.R.layout中android.R.layout.simple_list_item_1android.R.layout.simple_list_item_2android.R.layout.simple_list_item_checkedandroid.R.layout.simple_list_item_multiple_choiceandroid.R.layout.simple_list_item_single_choice系統(tǒng)內(nèi)置列表項(xiàng)列表項(xiàng)的常見(jiàn)規(guī)劃設(shè)計(jì)在實(shí)際應(yīng)用中,列表項(xiàng)顯示設(shè)計(jì)往往是多種多樣的一些常見(jiàn)的設(shè)計(jì)效果如下:列表項(xiàng)常見(jiàn)規(guī)劃設(shè)計(jì)創(chuàng)建自定義適配器編寫(xiě)自定義適配器,選擇繼承android.widget.BaseAdapter通常為適配器關(guān)聯(lián)一個(gè)list,用于數(shù)據(jù)的提供覆蓋publicintgetCount()方法,用于告知列表有多少項(xiàng)數(shù)據(jù)覆蓋getView()方法,用于向列表提供列表項(xiàng)的顯示視圖列表項(xiàng)視圖通常有兩種方法通過(guò)布局資源定義,然后采用動(dòng)態(tài)加載的方法使用通過(guò)程序?qū)崿F(xiàn)布局創(chuàng)建自定義適配器publicintgetCount(){returndataList.size();}ViewgetView(intposition,ViewconvertView,ViewGroupparent)創(chuàng)建自定義適配器getView()方法覆蓋示例創(chuàng)建自定義適配器2publicViewgetView(intposition,ViewconvertView,ViewGroupparent){Stringns=Context.LAYOUT_INFLATER_SERVICE;LayoutInflaterli=(LayoutInflater)context.getSystemService(ns);
Viewlayout=li.inflate(R.layout.simple_item,null);TextViewtitleView=(TextView)layout.findViewById(R.id.title);TextViewbodyView=(TextView)layout.findViewById(R.id.body);Mailm=dataList.get(position);titleView.setText(m.getTitle());bodyView.setText(m.getMessage());
returnlayout;}使用自定義適配器實(shí)現(xiàn)動(dòng)態(tài)顯示數(shù)據(jù)所謂動(dòng)態(tài)顯示就是在運(yùn)行過(guò)程中通過(guò)程序增刪改列表項(xiàng)在自定義適配器中添加增刪改數(shù)據(jù)的方法在改變數(shù)據(jù)完成后一定要通知視圖實(shí)現(xiàn)動(dòng)態(tài)顯示數(shù)據(jù)publicvoidaddMail(Mailm){dataList.add(m);
notifyDataSetChanged();}動(dòng)態(tài)增加列表數(shù)據(jù)演示演示動(dòng)態(tài)增加列表數(shù)據(jù)示例第5節(jié)下拉視圖Spinner知識(shí)點(diǎn)預(yù)覽#知識(shí)點(diǎn)重點(diǎn)難點(diǎn)應(yīng)用說(shuō)明1創(chuàng)建Spinner√
介紹創(chuàng)建Spinner對(duì)象的過(guò)程。2利用Spinner顯示數(shù)據(jù)√介紹如何使用Spinner顯示數(shù)據(jù)。3實(shí)現(xiàn)帶圖片的Spinner√介紹實(shí)現(xiàn)帶圖片的Spinner項(xiàng)的過(guò)程。創(chuàng)建SpinnerSpinner相當(dāng)于Android系統(tǒng)中的combobox(下拉選擇框)Spinner同樣使用Adapter提供數(shù)據(jù)顯示在布局中使用<Spinner>標(biāo)簽布局在Activity中獲取Spinner對(duì)象創(chuàng)建Spinner<Spinnerandroid:id="@+id/spinner"android:layout_width="match_parent"android:layout_height="wrap_content"/>Spinnerspinner=(Spinner)findViewById(R.id.spinner);利用Spinner顯示數(shù)據(jù)在資源中準(zhǔn)備要顯示的數(shù)據(jù)數(shù)組通過(guò)ArrayAdapter給Spinner提供數(shù)據(jù)顯示利用Spinner顯示數(shù)據(jù)<string-arrayname="moviearray"><item>獅子王</item><item>叢林大冒險(xiǎn)</item><item>米老鼠和唐老鴨</item><item>黑貓警長(zhǎng)</item></string-array>String[]data=getResources().getStringArray(R.array.moviearray);ArrayAdapter<String>adapter=newArrayAdapter<String>(MainActivity.this,android.R.layout.simple_spinner_item,data);s.setAdapter(adapter);簡(jiǎn)單Spinner示例演示演示簡(jiǎn)單的Spinner示例實(shí)現(xiàn)帶圖片的Spinner需要自定義Spinner的列表項(xiàng)視圖使用自定義列表項(xiàng)視圖的辦法有多種通過(guò)自定義適配器來(lái)使用通過(guò)繼承ArrayAdapter,覆蓋getDropDownView()方法實(shí)現(xiàn)帶圖片的Spinner實(shí)現(xiàn)帶圖片的Spinner通過(guò)覆蓋getDropDownView()方法實(shí)現(xiàn)自定義視圖實(shí)現(xiàn)帶圖片的Spinner2ArrayAdapter<CharSequence>adapter=newArrayAdapter<Cha
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026中國(guó)建材集團(tuán)數(shù)字科技有限公司招聘23人筆試參考題庫(kù)及答案解析
- 2026年西北師范大學(xué)考核招聘博士研究生191人筆試備考題庫(kù)及答案解析
- 廣西防城港市第二中學(xué)2026年春季學(xué)期臨聘教師招聘筆試參考題庫(kù)及答案解析
- 2026上海分子細(xì)胞卓越中心陳玲玲組招聘實(shí)驗(yàn)技術(shù)員2人考試參考題庫(kù)及答案解析
- 2026年甘肅省公信科技有限公司面向社會(huì)招聘80人(第一批)筆試模擬試題及答案解析
- 2026新疆石河子市華僑國(guó)有資本運(yùn)營(yíng)有限公司招聘1人筆試參考題庫(kù)及答案解析
- 2026云南旅游職業(yè)學(xué)院招聘14人筆試備考題庫(kù)及答案解析
- 2026浙江溫州市中醫(yī)院招聘內(nèi)鏡中心人員1人考試備考試題及答案解析
- 2026年度宣城市市直事業(yè)單位公開(kāi)招聘工作人員8人筆試備考題庫(kù)及答案解析
- 2026年高齡老人防跌倒干預(yù)措施
- EPC總承包項(xiàng)目管理組織方案投標(biāo)方案(技術(shù)標(biāo))
- 過(guò)年留人激勵(lì)方案
- 除草機(jī)安全培訓(xùn)總結(jié)課件
- 人才發(fā)展手冊(cè)
- 師德師風(fēng)培訓(xùn)材料
- 叉車(chē)初級(jí)資格證考試試題與答案
- 2025年中國(guó)醫(yī)學(xué)科學(xué)院研究所招聘面試高頻問(wèn)題答案與解析
- 2025至2030中國(guó)新癸酸縮水甘油酯行業(yè)發(fā)展研究與產(chǎn)業(yè)戰(zhàn)略規(guī)劃分析評(píng)估報(bào)告
- 剪映完整課件
- 2025新能源集控中心規(guī)范化管理導(dǎo)則
- 2025屆新疆烏魯木齊市高三下學(xué)期三模英語(yǔ)試題(解析版)
評(píng)論
0/150
提交評(píng)論