




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Android程序設(shè)計基礎(chǔ)第7章:列表與適配器本章內(nèi)容第1節(jié)Android列表用途第2節(jié)用ArrayAdapter顯示數(shù)據(jù)第3節(jié)用SimpleAdapter顯示數(shù)據(jù)第4節(jié)
列表項布局設(shè)計第5節(jié)
下拉視圖Spinner本章目標(biāo)熟悉Android列表的特點與用途。熟練掌握使用ArrayAdapter顯示列表數(shù)據(jù)。掌握掌握使用SimpleAdapter顯示列表數(shù)據(jù)。掌握列表項的布局設(shè)計手段。掌握下拉視圖Spinner的用法。第1節(jié)Android列表用途知識點預(yù)覽#知識點重點難點應(yīng)用說明1列表控件的作用介紹列表控件的作用。2ListView控件√√介紹ListView控件的特征與用途。3Spinner控件√√介紹Spinner控件的特征與用途。4GridView控件√介紹GridView控件的特征與用途。5ExpandableListView控件√√√介紹ExpandableListView控件的特征與用途。列表控件是界面設(shè)計中一種常用的控件主要用于展現(xiàn)一系列數(shù)據(jù)項供用戶選擇或瀏覽,比如:收件箱中的郵件標(biāo)題列表通訊錄中的聯(lián)系人列表注冊用戶時的城市選擇列表Android系統(tǒng)中提供了多種形式的列表展現(xiàn)單選列表多選列表可展開列表列表控件的用途ListView控件用于以列表形式顯示數(shù)據(jù)ListView采用MVC模式將前端顯示和后端數(shù)據(jù)進(jìn)行了分離ListView裝載數(shù)據(jù)時并不使用ListView本身的方法通過指定一個Adapter對象給ListView提供數(shù)據(jù)ListView顯示效果如下ListView控件Spinner控件用于顯示一個下拉列表Spinner采用MVC模式將前端顯示和后端數(shù)據(jù)進(jìn)行了分離Spinner裝載數(shù)據(jù)時并不使用Spinner本身的方法通過指定一個Adapter對象給Spinner提供數(shù)據(jù)Spinner顯示效果如下Spinner控件GridView控件用于顯示一個表格GridView采用MVC模式將前端顯示和后端數(shù)據(jù)進(jìn)行了分離GridView裝載數(shù)據(jù)時并不使用GridView本身的方法通過指定一個Adapter對象給GridView提供數(shù)據(jù)GridView顯示效果如下GridView控件ExpandableListView控件是一個可展開的ListView控件ExpandableListView是ListView的直接子類ExpandableListView具備了ListView的基本特性展開特性類似于樹狀結(jié)構(gòu)或分組的效果ExpandableListView顯示效果如下ExpandableListView控件第2節(jié)用ArrayAdapter顯示數(shù)據(jù)知識點預(yù)覽#知識點重點難點應(yīng)用說明1Android列表設(shè)計思想√
介紹Android列表的MVC設(shè)計思想。2適配器用途√√介紹適配器在列表控件中的作用。3用ArrayAdapter顯示數(shù)據(jù)√√√介紹使用ArrayAdapter顯示數(shù)據(jù)。4列表事件處理√√介紹如何處理列表事件。Android列表采用了MVC的設(shè)計模式用戶前端界面與后端的數(shù)據(jù)分離MVC設(shè)計模式的思想如下視圖模塊負(fù)責(zé)顯示用戶界面和響應(yīng)用戶動作模型模塊負(fù)責(zé)管理維護(hù)數(shù)據(jù)控制器負(fù)責(zé)執(zhí)行業(yè)務(wù)邏輯Android列表設(shè)計思想View(視圖)Model(模型)Controller(控制器)查詢數(shù)據(jù)通知視圖選擇視圖執(zhí)行動作維護(hù)數(shù)據(jù)適配器在列表控件中的用途適配器就是列表控件的模型為列表控件提供數(shù)據(jù)為列表項提供了顯示視圖適配器的基類是android.widget.Adapter定義了數(shù)據(jù)提供者的標(biāo)準(zhǔn)提供了很多子類實現(xiàn)了多種數(shù)據(jù)的提供手段android.widget.ArrayAdapterandroid.widget.SimpleAdapter適配器用途ArrayAdapter通過數(shù)組為列表控件提供數(shù)據(jù)構(gòu)造ArrayAdapter的對象第二個參數(shù)表示為列表控件提供列表項的顯示視圖第三個參數(shù)即為適配器所需要的數(shù)組數(shù)據(jù)使用ArrayAdapter對象作為列表控件的數(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)的主要事件有兩個ItemSelected(列表項被選中時發(fā)生)通過列表控件的setOnItemSelectedListener()實現(xiàn)監(jiān)聽ItemClick(單擊列表項時發(fā)生)通過列表控件的setOnItemClickListener()實現(xiàn)監(jiān)聽ItemLongClick(長按列表項時發(fā)生)通過列表控件的setOnItemLongClickListener()實現(xiàn)監(jiān)聽列表事件處理ListView示例演示演示ListView示例第3節(jié)用SimpleAdapter顯示數(shù)據(jù)知識點預(yù)覽#知識點重點難點應(yīng)用說明1SimpleAdapter概述√√介紹SimpleAdapter的基本構(gòu)成。2列表數(shù)據(jù)結(jié)構(gòu)√介紹列表項復(fù)雜數(shù)據(jù)的構(gòu)建與存儲。3顯示復(fù)雜列表數(shù)據(jù)√介紹復(fù)雜數(shù)據(jù)對應(yīng)的顯示視圖設(shè)計。
SimpleAdapter可以用于顯示復(fù)雜數(shù)據(jù)SimpleAdapter可以在列表的一項中提供和顯示多個數(shù)據(jù)SimpleAdapter需要自定義數(shù)據(jù)結(jié)構(gòu)和顯示視圖布局SimpleAdapter的構(gòu)造需要5個參數(shù)context:
為使用SimpleAdapter的上下文data:為用于顯示的具體數(shù)據(jù)這是一個map對象的list,list中的每一項是一個mapmap中的每一項對應(yīng)著列表項顯示視圖中的一個內(nèi)容resource:用于顯示具體數(shù)據(jù)的布局資源from:data數(shù)據(jù)中map所包含的每一個項中key的名字的數(shù)組to:map中的每一個key的內(nèi)容所對應(yīng)的顯示視圖的資源id的數(shù)組SimpleAdapter概述使用SimpleAdapter顯示復(fù)雜數(shù)據(jù)需要設(shè)計好數(shù)據(jù)內(nèi)容不過視圖如何復(fù)雜,列表的每一項內(nèi)容由多個數(shù)據(jù)字段構(gòu)成在提供數(shù)據(jù)的時候,需要為每一個數(shù)據(jù)字段設(shè)計一個名字字段名字和具體數(shù)據(jù)構(gòu)成鍵值對,存放在map對象中列表數(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)定義用于顯示的列表項布局顯示復(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é)列表項布局設(shè)計知識點預(yù)覽#知識點重點難點應(yīng)用說明1系統(tǒng)內(nèi)置的列表項
介紹常見的系統(tǒng)內(nèi)置列表項布局。2列表項常見規(guī)劃設(shè)計介紹常見的列表項設(shè)計方案。3創(chuàng)建自定義適配器√√√介紹創(chuàng)建自定義適配器的過程。4實現(xiàn)動態(tài)顯示數(shù)據(jù)√√介紹使用自定義適配器實現(xiàn)動態(tài)改變數(shù)據(jù)。Android為列表控件提了一些基本的列表項布局布局基本都在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)置列表項列表項的常見規(guī)劃設(shè)計在實際應(yīng)用中,列表項顯示設(shè)計往往是多種多樣的一些常見的設(shè)計效果如下:列表項常見規(guī)劃設(shè)計創(chuàng)建自定義適配器編寫自定義適配器,選擇繼承android.widget.BaseAdapter通常為適配器關(guān)聯(lián)一個list,用于數(shù)據(jù)的提供覆蓋publicintgetCount()方法,用于告知列表有多少項數(shù)據(jù)覆蓋getView()方法,用于向列表提供列表項的顯示視圖列表項視圖通常有兩種方法通過布局資源定義,然后采用動態(tài)加載的方法使用通過程序?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;}使用自定義適配器實現(xiàn)動態(tài)顯示數(shù)據(jù)所謂動態(tài)顯示就是在運(yùn)行過程中通過程序增刪改列表項在自定義適配器中添加增刪改數(shù)據(jù)的方法在改變數(shù)據(jù)完成后一定要通知視圖實現(xiàn)動態(tài)顯示數(shù)據(jù)publicvoidaddMail(Mailm){dataList.add(m);
notifyDataSetChanged();}動態(tài)增加列表數(shù)據(jù)演示演示動態(tài)增加列表數(shù)據(jù)示例第5節(jié)下拉視圖Spinner知識點預(yù)覽#知識點重點難點應(yīng)用說明1創(chuàng)建Spinner√
介紹創(chuàng)建Spinner對象的過程。2利用Spinner顯示數(shù)據(jù)√介紹如何使用Spinner顯示數(shù)據(jù)。3實現(xiàn)帶圖片的Spinner√介紹實現(xiàn)帶圖片的Spinner項的過程。創(chuàng)建SpinnerSpinner相當(dāng)于Android系統(tǒng)中的combobox(下拉選擇框)Spinner同樣使用Adapter提供數(shù)據(jù)顯示在布局中使用<Spinner>標(biāo)簽布局在Activity中獲取Spinner對象創(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ù)組通過ArrayAdapter給Spinner提供數(shù)據(jù)顯示利用Spinner顯示數(shù)據(jù)<string-arrayname="moviearray"><item>獅子王</item><item>叢林大冒險</item><item>米老鼠和唐老鴨</item><item>黑貓警長</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);簡單Spinner示例演示演示簡單的Spinner示例實現(xiàn)帶圖片的Spinner需要自定義Spinner的列表項視圖使用自定義列表項視圖的辦法有多種通過自定義適配器來使用通過繼承ArrayAdapter,覆蓋getDropDownView()方法實現(xiàn)帶圖片的Spinner實現(xiàn)帶圖片的Spinner通過覆蓋getDropDownView()方法實現(xiàn)自定義視圖實現(xiàn)帶圖片的Spinner2ArrayAdapter<CharSequence>adapter=newArrayAdapter<Cha
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 第四單元 經(jīng)濟(jì)大危機(jī)和第二次世界大戰(zhàn) 教學(xué)設(shè)計 2024-2025學(xué)年統(tǒng)編版九年級歷史下冊
- 2025年海南體育職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫匯編
- Unit 1 A New Start Understanding ideas My First Day at Senior High 教學(xué)設(shè)計-2024-2025學(xué)年高中英語外研版(2019)必修第一冊
- 8 冀中的地道戰(zhàn)教學(xué)設(shè)計 教學(xué)設(shè)計-2024-2025學(xué)年統(tǒng)編版語文五年級上冊
- 第三章大氣的運(yùn)動單元教學(xué)設(shè)計2023-2024學(xué)年高中地理人教版(2019)選擇性必修1
- Unit 8 Knowing the world Lesson 1 Where are you from 教學(xué)設(shè)計 2024-2025學(xué)年冀教版英語七年級上冊
- 第12課 水陸交通的變遷 教學(xué)設(shè)計-2024-2025學(xué)年高二歷史統(tǒng)編版(2019)選擇性必修2
- 第1章 物質(zhì)及其變化第4節(jié) 常見的堿 教學(xué)設(shè)計 第一課時-2024-2025學(xué)年浙教版九年級上冊科學(xué)
- 第二單元(教學(xué)設(shè)計)2024-2025學(xué)年統(tǒng)編版語文四年級上冊
- 黑龍江省2024-2025學(xué)年高二上學(xué)期12月月考地理試題(解析版)
- 部編四年級道德與法治下冊全冊教案(含反思)
- 煙草栽培(二級)鑒定理論考試復(fù)習(xí)題庫-上(單選題匯總)
- 建筑施工安全檢查標(biāo)準(zhǔn)-JGJ59-2011完整版
- 八年級下冊道德與法治第一單元教案(4篇)
- 練字常用的稿紙-紅色單線稿紙-書寫紙張打印即可
- 動物生物化學(xué)(全套577PPT課件)
- 個人簡歷求職競聘自我介紹PPT模板課件
- Q∕GDW 11612.1-2018 低壓電力線高速載波通信互聯(lián)互通技術(shù)規(guī)范 第1部分:總則
- 活性炭生產(chǎn)工藝流程圖
- 重量分析法實驗
- ASM鑄造缺陷的國際分類7大類(學(xué)習(xí)版0228)
評論
0/150
提交評論