版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第4章高級控件與數(shù)據(jù)適配器Android移動應(yīng)用程序開發(fā)教程第4章高級控件與數(shù)據(jù)適配器ListView控件1適配器2GridView3TabHost4Gallery和ImageSwitcher34.1ListView與適配器ListViewListView是一種列表視圖,將ListAdapter所提供的各個控件顯示在一個垂直的、可滾動的列表中。ListView常用的監(jiān)聽包括:單擊監(jiān)聽,添加單擊監(jiān)聽使用ListView.setOnItemClickListener();滾動監(jiān)聽,添加滾動監(jiān)聽使用ListView.setOnItemSelectedListener();長按監(jiān)聽,添加長按監(jiān)聽使用setOnCreateContextMenuListener()。4.1ListView與適配器ListView實現(xiàn)一個ListView控件,主要分以下四步驟:第一步,準(zhǔn)備ListView要顯示的數(shù)據(jù),使用一維或多維動態(tài)數(shù)組保存數(shù)據(jù);第二步,構(gòu)建適配器。由于ListView的每一個Item的組成可簡單,也可能比較復(fù)雜,所以根據(jù)需要,可選擇ArrayAdapter,SimpleAdapter或BaseAdapter來為ListView綁定數(shù)據(jù);第三步,使用setAdapter(),把適配器添加到ListView,并顯示出來。第四步,為ListView添加監(jiān)聽器,設(shè)置各種事件(如單擊、滾動、單擊長按等)的響應(yīng)操作。4.1ListView與適配器Adapter(適配器)Adapter是界面數(shù)據(jù)綁定的一種理解。它所操縱的數(shù)據(jù)如數(shù)組,鏈表,數(shù)據(jù)庫,集合等。常用的適配器有ArrayAdapter,SimpleAdapter,SimpleCursorAdapter,它們都是繼承BaseAdapter。Adapter都位于android.widget包下。Adapter對象有兩個主要責(zé)任:用數(shù)據(jù)填充布局處理用戶的選擇使用ArrayAdapter為下拉列表加載數(shù)據(jù),有兩種方式:使用Java代碼動態(tài)地定義下拉列表的數(shù)據(jù)源。使用xml文件預(yù)先定義數(shù)組資源描述文件。ListViewvsGridView4.1ListView與適配器ListViewvsGridView如何創(chuàng)建ListViewListView控件ListActivity4.1ListView與適配器ListViewvsGridView給ListView填充數(shù)據(jù)android:entries="“數(shù)據(jù)適配器ArrayAdapterSimpleAdapterCursorAdapterBaseAdapter4.1ListView與適配器數(shù)據(jù)適配器ArrayAdapter4.1ListView與適配器android.R.layout.simple_list_item_1android.R.layout.simple_list_item_single_choiceandroid.R.layout.simple_list_item_multiple_choiceandroid.R.layout.simple_list_item_checkedsetChoiceMode4.1ListView與適配器數(shù)據(jù)適配器SimpleAdapter4.1ListView與適配器Haveatry!4.1ListView與適配器數(shù)據(jù)適配器BaseAdapter4.1ListView與適配器數(shù)據(jù)適配器BaseAdapterabstractintgetCount(),返回適配器中數(shù)據(jù)個數(shù),確定列表有多少行。abstractObjectgetItem(intposition),獲取指定位置的數(shù)據(jù)元素,一般不用。abstractlong getItemId(intposition),獲取指定位置元素的行號,一般不用。abstractView getView(intposition,ViewconvertView,ViewGroupparent),繪制ListView中的每一項,這個方法比較重要,也比較復(fù)雜,自定義適配器體現(xiàn)在這。4.1ListView與適配器Haveatry!4.1ListView與適配器Android事件在Android的應(yīng)用中,用戶與界面的交互操作會觸發(fā)相應(yīng)的事件。在Android平臺上,對事件的處理機(jī)制有兩種:基于回調(diào)機(jī)制的事件處理?;诒O(jiān)聽接口的事件處理。View類提供了許多公用的捕獲用戶在界面上觸發(fā)事件的方法。為了捕獲和處理事件,必須繼承某個類(如View類),并重載這些方法,以便自己定義具體的處理邏輯代碼。4.1ListView與適配器基于回調(diào)機(jī)制的事件處理onKeyDown(int,KeyEvent)–按下一個鍵時調(diào)用。第一個參數(shù)為int類型,為被按下的鍵的鍵值(即鍵盤碼)。注意:不同型號的手機(jī)中,鍵值可能不同。第二個參數(shù)為按鍵事件的對象,封裝了觸發(fā)事件的詳細(xì)信息。返回值是boolean類型,當(dāng)返回true時,表示已完整地處理了該事件。onKeyUp(int,KeyEvent)–釋放一個鍵時調(diào)用。第一個參數(shù)為int類型,為釋放鍵的鍵值(即鍵盤碼)。第二個參數(shù)為事件封裝類的對象,與onKeyDown方法中的含義相同。返回值是boolean類型,與onKeyDown方法的返回值含義相同。onKeyDown和onKeyUp的使用方法基本相同,用戶如果需要對按鍵被按下或抬起時進(jìn)行事件處理,可通過重寫該方法實現(xiàn)。4.1ListView與適配器ListView四種監(jiān)聽器:setOnClickListener(View.OnClickListenerl),監(jiān)聽ListView控件的單擊,一般不采用該監(jiān)聽器。setOnItemClickListener(AdapterView.OnItemClickListenerlistener),監(jiān)聽列表項單擊操作。setOnItemLongClickListener(AdapterView.OnItemLongClickListenerlistener),監(jiān)聽列表項長時間單擊。setOnItemSelectedListener(AdapterView.OnItemSelectedListenerlistener),監(jiān)聽列表項被選中操作。4.1ListView與適配器事件監(jiān)聽器接口的實現(xiàn)方法外部類實現(xiàn)事件監(jiān)聽器接口通常是在Activity組件中實現(xiàn)其接口。代碼如:
publicclassTestMediaextendsActivityimplementsView.OnClickListener{ … @override publicvoidonCreate(BundlesavedInstanceState){ … Buttonbtn1=(Button)findViewById(R.id.myButton1); Buttonbtn2=(Button)findViewById(R.id.myButton2); btn1.setOnClickListener(); btn2.setOnClickListener(); } … @override publicvoidonClick(Viewv){ switch(v.getId()){ caseR.id.myButton1: …//dosomething break; caseR.id.myButton2: …//dosomething break; } } }4.1ListView與適配器事件監(jiān)聽器接口的實現(xiàn)方法內(nèi)部類實現(xiàn)事件監(jiān)聽器接口類似于第二種,代碼如: publicclassTestMediaextendsActivity{ … @override publicvoidonCreate(BundlesavedInstanceState){ … Buttonbtn1=(Button)findViewById(R.id.myButton1); Buttonbtn2=(Button)findViewById(R.id.myButton2); btn1.setOnClickListener(newClickEvent()); btn2.setOnClickListener(newClickEvent()); } … classClickEventimplementsView.OnClickListener{ publicvoidonClick(Viewv){ switch(v.getId()){ caseR.id.myButton1: …//dosomething break; caseR.id.myButton2: …//dosomething break; } } } }4.1ListView與適配器實例2:OnClickListener舉例項目名:Activity_RadioGroupClearRadioGroupActivity.java……publicclassRadioGroupActivityextendsActivityimplementsView.OnClickListener{privateRadioGroupmRadioGroup;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.radio_group);setTitle("RadioGroup_Activity");mRadioGroup=(RadioGroup)findViewById(R.id.menu);ButtonclearButton=(Button)findViewById(R.id.clear);clearButton.setOnClickListener(this);}@OverridepublicvoidonClick(Viewv){mRadioGroup.clearCheck();}}使用接口。4.1ListView與適配器實例3:OnClickListener舉例項目名:Activity_BtnBtnActivity.java……publicclassBtnActivityextendsActivity{ /**Calledwhentheactivityisfirstcreated.*/ @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setTitle("EditText_Activity"); setContentView(R.layout.btn); Buttonget_edit_view_button=(Button)findViewById(R.id.get_edit_view_button); get_edit_view_button.setOnClickListener(newget_edit_view_button_listener()); }
privateclassget_edit_view_button_listenerimplementsView.OnClickListener{ publicvoidonClick(Viewv){ EditTextedit_text=(EditText)findViewById(R.id.edit_text); CharSequenceedit_text_value=edit_text.getText(); setTitle("輸入的值:"+edit_text_value); } }}不使用接口。4.1ListView與適配器ExpandableListView4.2ExpandableListViewExpandableListView4.2ExpandableListViewExpandableListView4.2ExpandableListViewGridViewGridViewvsGridLayout4.3GridViewGridViewGridView是一種以二維表格形式顯示控件的視圖,所顯示的控件來自ListAdapter適配器。GridView的屬性與方法:屬性方法含義android:columnWidthsetColumnWidth()設(shè)置列的寬度android:gravitysetGravity()設(shè)置對齊方式android:numColumnssetNumColumns()設(shè)置各個元素之間的水平距離android:horizontalSpacingsetHorizontalSpacing()設(shè)置列數(shù)android:verticalSpacingsetVerticalSpacing()設(shè)置各個元素之間的豎直距離4.3GridView實例:使用GridView實現(xiàn)九宮圖,每個網(wǎng)絡(luò)中圖片在上方,圖片的編號在下方。4.3GridView項目名:Activity_GridView設(shè)計GridView的單元格布局文件:res/layout目錄下的pic_item.xml。Java代碼:GridViewActivity.java在定義BaseAdapter子類時使用res/layout目錄下的xml布局文件,要使用LayoutInflater類。為該GridView對象添加滾動監(jiān)聽OnItemClickListener(),重寫onItemClick()回調(diào)方法。GridView專有屬性4.3GridViewGridView填充數(shù)據(jù)4.3GridViewHaveatry!4.3GridViewGridLayoutGridLayout 布局管理器GridView 控件4.3GridViewScrollView和HorizontalScrollView4.4ScrollView和HorizontalScrollViewScrollView(滾動視圖)ScrollView類位于android.widget包下,它繼承自FrameLayout。在ScrollView中控件的內(nèi)容在一屏幕顯示不完時,便會自動產(chǎn)生滾動功能,通過縱向滾動的方式以顯示被擋住的部分內(nèi)容。ScrollView只支持垂直滾動。ScrollView中只能加一個控制,
一般是嵌入一個線性布局。4.4ScrollView和HorizontalScrollViewSlidingDrawer4.5SlidingDrawer
<SlidingDrawer
android:id="@+id/drawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:handle="@+id/handle"
android:content="@+id/content">
<ImageView
android:id="@id/handle"
android:layout_width="88dip"
android:layout_height="44dip"/>
<GridView
android:id="@id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</SlidingDrawer>4.5SlidingDrawerTabHost4.6TabHost和TabSpecTabHost創(chuàng)建Tab的方式
XML TabActivity4.6TabHost和TabSpecGalleryGallery是Android中的圖片庫控件,是水平滾動顯示圖片資源的列表。Gallery的屬性與方法:屬性方法含義android:animationDurationsetAnimationDuration()設(shè)置動畫過渡時間android:gravitysetGravity()設(shè)置在父控件中的對齊方式android:unselectedAlphasetUnselectedAlpha()設(shè)置選中的圖片透明度android:spacingsetSpacing()設(shè)置圖片之間的空白大小4.6TabHost和TabSpec實例:使用Gallery實現(xiàn)一個畫廊,該畫廊展示IT業(yè)一些著名人士照片。項目名:Activity_GalleryJava代碼:GalleryActivity.java4.6TabHost和TabSpecGallery和ImageSwitcher4.7Galley和ImageSwitcher習(xí)題實例1:設(shè)計Spinner,用于選擇所在城市名。項目名:Activity_Spinner。在res/values目錄下創(chuàng)建一個名為arrays.xml的文件。Java代碼:SpinnerActivity.java。給出兩種方式定義Spinner下拉列表內(nèi)容。使用getStringArray()方法從xml數(shù)組描述文件中載入數(shù)組的值。使用onItemSelected()定義當(dāng)選擇了下拉選項時的回調(diào)方法。運(yùn)行結(jié)果如圖:習(xí)題實例1(續(xù)):設(shè)計Spinner,用于選擇所在城市名。onItemSelected()方法的格式為:publicvoidonItemSelected(AdapterView<?>arg0,Viewarg1,intarg2,longarg3)參數(shù)arg0是適配器視圖對象,這里指Spinner的下拉列表視圖。其中,AdapterView是內(nèi)容由適配器來決定的視圖類,<?>是適配器里內(nèi)容的類型。參數(shù)arg1是適配器視圖里的被點擊的對象??梢岳斫獬上吕斜砜蛑斜贿x中的那一項。參數(shù)arg2指在下拉列表選項中被選擇項的位置。參數(shù)arg3指被點擊選項所在行的行ID號。習(xí)題實例2:使用SimpleAdapter適配器為ListView綁定數(shù)據(jù),列出國內(nèi)一些著名網(wǎng)站名及網(wǎng)址信息,單擊某一條目時,在標(biāo)題欄顯示其網(wǎng)址信息。項目名:Activity_ListViewSimpleAdtJava代碼:ListViewActivity.java使用simpleAdapter構(gòu)造數(shù)據(jù)需要用到ArrayList,其中的HashMap對象對應(yīng)于ListView中的每
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)院全員核酸檢測工作總結(jié)(6篇)
- 關(guān)于項目合作的意向書(6篇)
- 《siji酒店調(diào)研報告》課件
- 體育課程活動策劃的實踐與效果評估報告
- 企業(yè)園區(qū)的綠化美化實踐探索
- 辦公新境界宋城辦公環(huán)境規(guī)劃與設(shè)計思路
- 創(chuàng)新設(shè)計打造安全舒適的學(xué)生餐廳環(huán)境
- 辦公新紀(jì)元打造高效辦公環(huán)境-辦公環(huán)境與設(shè)備綜合改善計劃書
- 辦公自動化系統(tǒng)中的數(shù)學(xué)算法優(yōu)化
- 辦公用品客戶需求調(diào)研與高效采購方法
- 航空集裝器知識完整版
- 減速器箱體工藝工裝設(shè)計說明書(含圖紙)
- (完整版)臨床檢驗基礎(chǔ)名詞解釋
- 深度分析澳洲資源量最大的皮爾巴拉地區(qū)礦床匯總
- 技術(shù)交底給水銅管道及配件安裝.
- 實驗動物房改造項目設(shè)計淺談
- 市政道路與橋梁銜接處設(shè)計及施工
- 【機(jī)械畢業(yè)論文】便攜式電火花小孔機(jī)結(jié)構(gòu)設(shè)計
- 國際商法考點期末考試
- 《docker基本操作》ppt課件
- 超聲波探傷報告
評論
0/150
提交評論