版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Android平臺手機嵌入式開發(fā)第三講高級用戶界面設(shè)計-視圖組件Views.主要內(nèi)容:視圖組件小部件(Widgets)菜單對話框消息提示條主要內(nèi)容:通過前面的介紹,了解了Android平臺中布局、視圖、小部件的相同點和不同點:相同點:這三者都是可以顯示的組件不同點:從角色定義上
布局:注重整體,好比設(shè)計圖
小部件(widget):注重的是細節(jié),好比裝飾品
視圖(view):注重的是組件的組合,好比組合家具本講重點講解各視圖組件和小部件的使用3.1:視圖組件(Views)1、視圖的使用模式:視圖組件的定義和使用
和布局組件的定義一樣,也有在運行時創(chuàng)建和使用XML這兩種方式。
和布局組件的不同之處在于,布局組件一般都是布局資源的根元素;
而視圖組件更多的包含于布局之內(nèi),使用時必須使用findViewByID()方法
但也有個別視圖組件標記根元素:如畫廊視圖和網(wǎng)頁視圖
使用時可以直接設(shè)置為內(nèi)容,引用方法和布局一樣:R.layout.<文件名>,setContentView()3.1:視圖組件(Views)1、視圖的使用模式:視圖組件的事件響應(yīng)
當用戶與屏幕顯示的組件進行交互時,組件需要偵聽用戶的選擇,并進行相應(yīng)的響應(yīng)。
下表是view組件的事件及偵聽器類型舉例事件偵聽器類型對應(yīng)的事件說明View.OnClickListeneronClick()點擊事件View.OnFocusChangeListeneronFocusChange()焦點改變事件View.OnKeyListeneronKey()擊鍵事件View.OnTouchListeneronTouh()觸摸事件View.OnLongClickListeneronLongClick()長點擊事件View.OnCreateContextMenuListeneronCreatContextMenu()創(chuàng)建上下文菜單事件3.1:視圖組件(Views)1、視圖的使用模式:視圖組件的事件響應(yīng)
在Android平臺中,開發(fā)人員可以通過三種方式來設(shè)置事件偵聽:1)、先定義事件偵聽器,后注冊給需要偵聽用戶動作的組件:privateOnClickListenermListener=newOnClickListener(){ @Override publicvoidonClick(Viewv){ if(v.getId()==R.id.BTN_ACTION){ Toast.makeText(EventHandleDemoAct.this,"Hello,Android!", Toast.LENGTH_SHORT).show(); } }};mBtnAction.setOnClickListener(mListener);3.1:視圖組件(Views)視圖組件的事件響應(yīng)2)、重載用于偵聽用戶動作的事件回調(diào)函數(shù)publicclassEventHandleDemoActextendsActivityimplementsOnClickListener{
publicvoidonClick(Viewv){ //TODOAuto-generatedmethodstub if(v.getId()==R.id.BTN_ACTION){ Toast.makeText(EventHandleDemoAct.this,"Hello,Android!", Toast.LENGTH_SHORT).show(); } }}mBtnAction.setOnClickListener(this);參考例子:Ch03_EventHandleDemo3.1:視圖組件(Views)視圖組件的事件響應(yīng)3)、在XML文件中使用android:onClick屬性配置對應(yīng)的方法
在Activity中編寫一個包含View類參數(shù)的方法,并且將要觸發(fā)的動作代碼放在該方法中,然后再布局文件中,通過android:onClick屬性指定對應(yīng)的方法名實現(xiàn)。publicvoidmyClick(Viewview){//編寫要執(zhí)行的動作代碼}在布局文件中通過android:onClick=“myClick”語句添加點擊事件監(jiān)聽器3.2:小部件(widgets)1、widgets介紹:小部件widget都是指在界面框架中比較獨立的視圖組件,不作為容器組件。
例如:文本視圖:TextView、按鈕Button、圖片視圖ImageView小部件定義在android.widget包中小部件既可以在XML中定義,也可以在代碼中定義。在XML中小部件的定義都是在布局或者一些視圖組件的定義體內(nèi),不會定義為布局資源的根元素。3.2:小部件(widgets)2、小部件的使用:引用資源:對于XML中定義的小部件,對小部件的使用,也必須先使用資源填充器inflater對XML資源進行填充Inflate;然后通過該資源文件對應(yīng)的Activity組件或者小部件的父視圖對象的findViewById()方法來獲取資源ID指定的小部件對象實例動態(tài)創(chuàng)建:在java代碼中可以直接使用new語句來創(chuàng)建小部件對象實例,然后再添加到父視圖中,添加時需要指明布局參數(shù),定義如何放置小部件3.2:小部件(widgets)3、事件響應(yīng):
從設(shè)計角度,小部件正是用于與用戶進行交互的。對其事件的響應(yīng)也是最全面的
在使用的過程中,必須先注冊相應(yīng)類型事件偵聽器(Listener),在該偵聽器的事件回調(diào)方法中再對該事件進行相應(yīng)處理。3.2:小部件(widgets)4、具體小部件widget介紹:一:顯示和編輯文本的組件:
在SDK中,提供了TextView、EditText組件,分別用來顯示和編輯文本,還提供了MultiAutoCompleteTextView組件來自動完成需要輸入的文本內(nèi)容。3.2:小部件(widgets)1:TextView組件:ch03_textviewch03_texthtmlviewXML定義:
<TextViewandroid:id="@+id/textview2"android:layout_width="fill_parent" android:layout_height="wrap_content"android:text="更復(fù)雜的設(shè)置" android:textSize="20dp"android:textColor="#FF00FF" android:background="#FFFFFF"android:padding="30dp" android:layout_margin="30dp"/>3.2:小部件(widgets)1:TextView組件:屬性介紹:android:gravity:設(shè)置文本位置,如設(shè)置成“center”,文本將居中顯示;center_vertical、center_horizontalandroid:password:ture:以小點”.”顯示文本
android:password=‘ture’android:textColor:設(shè)置文本顏色
textView.setTextColor(android.graphics.Color.RED);android:padding:設(shè)置文字距離TextView組件的間距,可以有paddingLeft、paddingRight、paddingTop、paddingBottom屬性3.2:小部件(widgets)屬性介紹:android:layout_margin:TextView組件距離相鄰組件的間距
有marginLeft、marginRight、marginTop、marginBottom屬性android:text:設(shè)置顯示文本Java代碼中設(shè)置text:setText()setText():如果想設(shè)置一個int類型的值(不是資源ID),此時需要使用String.valueOf()方法將int轉(zhuǎn)換3.2:小部件(widgets)屬性介紹:背景色設(shè)置:方法有三SetBackgroundResource:使用顏色資源ID設(shè)置textView.setBackgroundResource(R.color.background);SetBackgoundColor:通過顏色值設(shè)置textView.setBackgroundColor(android.graphics.Color.REDSetBackgoundDrawable:通過Drawable對象設(shè)置Resourcesresources=getBaseContext().getResources();Drawabledrawable=resources.getDrawable(R.color.background);textView.setBackgroundDrawable(drawable);3.2:小部件(widgets)屬性介紹:android:autoLink:設(shè)置是否當文本為URL鏈接/email/電話號碼/map時,文本顯示為可點擊的鏈接。TextView組件可以自動識別。
可選值:none:不匹配任何鏈接,默認值web:匹配web網(wǎng)址email:匹配email網(wǎng)址phone:匹配電話號碼map:匹配映射地址all:匹配所有的鏈接3.2:小部件(widgets)android:autoLink:
如果TextView組件不設(shè)置該屬性,則需要使用HTML的<a>標簽。XML中:在文本中使用<a>標簽指定鏈接及鏈接文本。
XML布局文件中不能直接使用<a>,因此要在字符串資源文件中指定相應(yīng)的文本,然后在布局文件中指定字符串資源ID<stringname="link_text_manual">作者博客:<ahref=''></a>android:text="@string/link_text_manual"/>3.2:小部件(widgets)android:autoLink:JAVA代碼中:需要使用android.text.html類的fromHtml()方法進行轉(zhuǎn)換。
textView2.setText(Html.fromHtml("作者博客:<ahref=''></a><h1><i><fontcolor='#0000FF'>h1號字、斜體、藍色</font></i></h5></h1><h3>h3號字</h3><h5><fontcolor='#CC0000'>李寧</font></h5>"));3.2:小部件(widgets)其他知識點介紹:Drawable:Drawable就是一個可畫的對象,其可能是一張位圖(BitmapDrawable),也可能是一個圖形(ShapeDrawable),還有可能是一個圖層(LayerDrawable),
我們根據(jù)畫圖的需求,創(chuàng)建相應(yīng)的可畫對象,最終將這種可畫對象顯示在畫布上LayoutInflater:它的作用類似于findViewById(),不同點是LayoutInflater是用來找layout下xml布局文件,并且實例化!而findViewById()是找具體xml下的具體widget控件(如:Button,TextView等)。4.2:小部件(widgets)2:EditText組件:ch03_edittext
是TextView的子類,具有TextView組件的一切屬性和方法。
區(qū)別:開發(fā)中一般使用EditText組件輸入文本,TextView組件顯示文本<EditTextandroid:layout_width="200dp"android:layout_height="wrap_content" android:textColor="#000000"android:background="#FFFFFF" android:layout_margin="10dp"android:digits="abcdefghijklmnopqrstuvwxyz"/>
3.2:小部件(widgets)2:EditText組件:屬性介紹可以通過多種方式指定允許輸入的字符Android:digits:設(shè)置允許輸入哪些字符。如“1234567890.+-*/%()” //設(shè)置只接受某些數(shù)字,0123456789
//只接受某些字母:abcdefg….xyz android:numeric:"integer“//設(shè)置只能輸入整數(shù),如果是小數(shù)則是:decimalandroid:inputType:設(shè)置文本的類型,用于幫助輸入法顯示合適的鍵盤類型,如textEmailAddress,會顯示一些@等特殊字符鍵盤3.2:小部件(widgets)2:EditText組件:Android:visibility:設(shè)置組件是否可見
invisible:不可見,布局中仍然留出位置
gone:不可見,布局中不會留出位置
visible:可見Android:autoText://自動拼寫幫助Android:capitalize://首字母大寫Android:singleLine://是否單行或者多行,回車是離開文本框還是文本框增加新行Android:password://密碼Android:phoneNumber:
//輸入電話號碼Android:editable://是否可編輯3.2:小部件(widgets)3:AutoCompleteTextView組件:ch03_autotext該組件和EditText組件類似,都可以輸入文本;不同點:該組件可以綁定一個字符串數(shù)組或者List對象,當輸入兩個及以上字符時,系統(tǒng)將在該組件下方列出被綁定對象中所有以輸入字符開頭的字符串LayoutXML<AutoCompleteTextViewandroid:id="@+id/autoCompleteTextView" android:layout_width="fill_parent"android:layout_height="wrap_content"/>
3.2:小部件(widgets)3:AutoCompleteTextView組件:Activity
如果需要實現(xiàn)輔助輸入列表,在Activity中還需要使用Adapter對象。String[]autoString=newString[]{"a","ab","abc","bb","bcd","bcdf","手機","手機操作系統(tǒng)","手機軟件"};ArrayAdapter<String>adapter=newArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line,autoString);//AutoCompleteTextViewAutoCompleteTextViewautoCompleteTextView=(AutoCompleteTextView)findViewById(R.id.autoCompleteTextView);autoCompleteTextView.setAdapter(adapter);3.2:小部件(widgets)4:
MultiAutoCompleteTextView組件:
連續(xù)輸入組件,在AutoCompleteTextView上進行的擴展。當輸入完一個字符串后,輸入逗號,然后再輸入其他字符,系統(tǒng)仍然會顯示輔助輸入列表。
<MultiAutoCompleteTextViewandroid:id="@+id/multiAutoCompleteTextView" android:layout_width="fill_parent"android:layout_height="wrap_content"/>3.2:小部件(widgets)4:
MultiAutoCompleteTextView組件:Activity說明:
除了使用Adapter之外,還需要說明字符串之間的分隔符。multiAutoCompleteTextView.setAdapter(adapter);multiAutoCompleteTextView.setTokenizer(newMultiAutoCompleteTextView.CommaTokenizer());
3.2:小部件(widgets)5:
按鈕與復(fù)選框組件:
按鈕可分為多種形式:如普通按鈕Button、帶圖像的按鈕ImageButton、選項按鈕RadioButton。普通按鈕Buttonch03_button Button組件的基本用法與TextView、EditText沒有太大的差異定義:<Buttonandroid:id="@+id/button1"android:layout_width="wrap_content" android:layout_height="wrap_content"android:text="我的按鈕1"/>3.2:小部件(widgets)屬性:android:background:"#aa00aa"---設(shè)置按鈕背景顏色android:drawableX:在按鈕的文字上下左右顯示圖片android:drawableTop="@drawable/star“android:drawableBottom="@drawable/star“android:drawableLeft="@drawable/star“android:drawableRight="@drawable/star“3.2:小部件(widgets)事件:單擊事件(onClick)
觸摸事件(onTouch)
焦點變化事件(onFocusChange)
鍵盤事件(onKey):button1=(Button)findViewById(R.id.button1); button1.setOnClickListener(this);button1.setOnTouchListener(this);button1.setOnFocusChangeListener(this);button1.setOnKeyListener(this);3.2:小部件(widgets)圖像按鈕Buttonch_03_imagebutton, ch_03_imagetextbutton
ImageButton是ImageView的子類,不是TextView的子類。XML定義:<ImageButtonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/button1_1"/>3.2:小部件(widgets)單選按鈕RadioButtonch_03_radiobutton
該組件為Button的子類,因此很多屬性和事件都可以使用
用于多選一的應(yīng)用中,如果想在選中某一個選項后,其他的單選按鈕都被設(shè)置為未選中狀態(tài),需要將RadioButton放置在<RadioGroup>中XML定義<RadioGroupandroid:layout_width="wrap_content"><RadioButtonandroid:layout_width="wrap_content" android:layout_height="wrap_content"android:text="選項3" android:drawableLeft="@drawable/star"android:drawableTop="@drawable/circle" android:drawablePadding="20dp"/>
3.2:小部件(widgets)開關(guān)狀態(tài)按鈕組件ToggleButtonch_03_togglebutton
該組件與Button組件的功能基本相同,用法也與Button基本相同。但該組件還提供了可以表示‘開/關(guān)’狀態(tài)的功能,類似于復(fù)選框。
該組件在按鈕文字的下方顯示一個綠色的指示條來表示‘開/關(guān)’狀態(tài),XML定義:<ToggleButtonandroid:id="@+id/toggleButton"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="30dp"android:textOff="打開電燈"android:textOn="關(guān)閉電燈"/>3.2:小部件(widgets)開關(guān)狀態(tài)按鈕組件屬性:Checked:ture:指示條顯示藍色,false:白色
可以通過setChecked()方法來設(shè)置android:textOff:“關(guān)閉”文本
android:textOn:“開啟”文本3.2:小部件(widgets)復(fù)選框按鈕CheckBox ch_03_dynamiccheckbox
該組件用于多選應(yīng)用
XML定義<CheckBoxandroid:id="@+id/checkbox"android:layout_width="fill_parent"android:layout_height="wrap_content"/>主要屬性:Android:checked:設(shè)置復(fù)選框的狀態(tài),ture:選中,false:不選
還可以通過setChecked()方法設(shè)置該屬性isChecked:判斷是否被選中動態(tài)創(chuàng)建組件示例:參考例子ch_03_dynamiccheckbox
3.2:小部件(widgets)6:
日期與時間組件:參考案例:ch_03_datetimepicker AndroidSDK提供了兩個組件:DatePicker和TimePicker,可以可視化輸入日期和時間
同時SDK提供了顯示時間的組件:DigitalClock和AnalogClock,分別以數(shù)字方式和表盤方式顯示時間。DatePicker
XML定義:<DatePickerandroid:id="@+id/datepicker"android:layout_width="fill_parent"android:layout_height="wrap_content"/>3.2:小部件(widgets)DatePicker
方法介紹:getYear():獲得當前的年份getMonth():獲得當前的月份getDayOfMonth():獲得當前的日期init(2001,1,25,OnDateChangedListener):初始化DatePicker組件,并設(shè)置日期變化的事件監(jiān)聽器datePicker.init(2001,1,25,this);3.2:小部件(widgets)6:
日期與時間組件:TimePicker
默認情況下市12小時進制,可以通過setIs24HourView(true)設(shè)置XML定義:<TimePickerandroid:id="@+id/timepicker"android:layout_width="fill_parent"android:layout_height="wrap_content"/>3.2:小部件(widgets)TimePicker
方法介紹:getCurrentHour():獲得當前的小時setCurrentHour():設(shè)置當前的小時getCurrentMinute():獲得當前的分鐘setCurrentMinute():設(shè)置得當前的分鐘setOnTimeChangedListener():設(shè)置onTimeChanged事件監(jiān)聽器3.2:小部件(widgets)顯示時鐘的組件:AnalogClock和DigitalClock
ch_03_clock以表盤和數(shù)字方式顯示時間:XML定義<AnalogClockandroid:layout_width="fill_parent" android:layout_height="wrap_content"/><DigitalClockandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="18dp"/>3.2:小部件(widgets)7:
進度條組件:參考案例:ch03_datetimepicker
任務(wù)或者工作完成率是軟件展現(xiàn)給用戶的一些基本信息,一般通過進度條來展現(xiàn)。
它還有一個次要的進度條,用來顯示中間進度,如在流媒體播放的緩沖區(qū)的進度。一個進度條也可不確定其進度。在不確定模式下,進度條顯示循環(huán)動畫。這種模式常用于應(yīng)用程序使用任務(wù)的長度是未知的 AndroidSDK提供了ProgressBar組件來展示進度條,同時提供了SeekBar和RatingBar組件,這兩個組件在ProgressBar組件上做了進一步的改進。3.2:小部件(widgets)ProgressBar
XML定義:<ProgressBarandroid:layout_width="wrap_content"android:layout_height="wrap_content"style="?android:attr/progressBarStyleLarge"/>屬性介紹:該組件在默認情況下是圓形的進度條,可以通過style屬性修改進度條為大、中、小三種形式的進度條,同時可以設(shè)置為水平進度條style=“?android:attr/progressBarStyleHorizontal”:水平進度條 android:progressBarStyle:默認進度條樣式style=“?android:attr/progressBarStyleLarge”圓形進度條style="?android:attr/progressBarStyleSmall"style="?android:attr/progressBarStyleSmallTitle"3.2:小部件(widgets)ProgressBar
屬性介紹:android:max=“100”:設(shè)置進度條總刻度android:progress=“30”:設(shè)置進度條當前刻度值3.2:小部件(widgets)SeekBar ch_03_seekbarXML定義:<SeekBarandroid:id="@+id/seekbar1"android:layout_width="fill_parent" android:layout_height="wrap_content"android:max="100" android:progress="30"/>RatingBar ch_03_ratingbarXML定義:<RatingBarandroid:id="@+id/ratingbar2"android:layout_width="wrap_content" android:layout_height="wrap_content"android:numStars="5" android:stepSize="0.1"/>3.1:視圖組件(Views)2、常見視圖組件:適配器視圖(AdapterView)視圖組件的繼承關(guān)系如右圖所示:
適配器視圖組件是部分視圖組件的父類。該視圖組件需要使用適配器來顯示數(shù)據(jù),
3.1:視圖組件(Views)2、常見視圖組件:適配器視圖(AdapterView)AdapterView的直接子類:
AbsListView,AbsSpinner
AdapterView的間接子類
ExpandableListView,Gallery, GridView,ListView,Spinner
適配器視圖類是一個抽象類,無法直接創(chuàng)建該類的實例,只能通過繼承該類來實現(xiàn)子類實例,或者已經(jīng)定義好的適配器視圖的子類:列表視圖、格子視圖等等
3.1:視圖組件(Views)2、常見視圖組件:適配器視圖(AdapterView)適配器是適配器視圖和數(shù)據(jù)之間的橋梁,對適配器的介紹將結(jié)合具體的視圖進行適配器是該視圖和其所依賴的數(shù)據(jù)之間的橋梁。在android.widget包中定義適配器對象的繼承關(guān)系如圖所示:
3.1:視圖組件(Views)2、常見視圖組件:列表視圖(ListView)
列表視圖以其簡潔直觀的界面效果和靈活的數(shù)據(jù)模型,贏得了開發(fā)人員的青睞。它以列表的形式展示具體內(nèi)容,并且能夠根據(jù)數(shù)據(jù)的長度自適應(yīng)顯示。
ListView采用MVC模式將前端顯示與后臺數(shù)據(jù)進行分離:
數(shù)據(jù)獲取需要一個Adapter對象
3.1:視圖組件(Views)具體使用:Xml定義如下所示:Listview的定義,可以創(chuàng)建新的資源ID,也可以引用系統(tǒng)資源ID,如果只有一個listview時,可以引用系統(tǒng)Listview的ID<ListViewandroid:id="@id/android:list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" android:drawSelectorOnTop="false"/>注意:該id的定義,必須引用系統(tǒng)資源中ID為list組件,否則會報錯:Causedby:java.lang.RuntimeException:YourcontentmusthaveaListViewwhoseidattributeis'android.R.id.list‘創(chuàng)建新的ID<ListViewandroid:id="@+id/lvCommonListView"android:layout_width="fill_parent"android:layout_height="wrap_content"/>3.1:視圖組件(Views)相應(yīng)的Activity組件Ch04_ListActDemo只有一個List時,可以使用ListActivity組件:注意與前面的只有一個listview的布局定義保持一致()
普通的Activity組件也可以顯示列表視圖組件,但是在對列表視圖所需的記錄數(shù)據(jù)的管理方面存在問題:Activity組件必須自己去維護這些數(shù)據(jù)集,增加代碼量,同時增加了操作與數(shù)據(jù)的耦合度。 Android平臺基于此種考慮,把列表視圖和數(shù)據(jù)適配器組合在一起,封裝成一個新的Activity組件—ListActivity。其有默認的布局資源,也可以定制布局資源。注意必須包含一個ID為’list’的列表視圖,否則會報錯。
可以直接繼承ListActivity,也可以繼承Activity,然后在該子類中通過列表適配器進行列表視圖與數(shù)據(jù)的綁定。3.1:視圖組件(Views)列表視圖(ListView)Adapter適配器:提供數(shù)據(jù)給列表視圖進行顯示3.1:視圖組件(Views)列表視圖(ListView)Adapter適配器:繼承關(guān)系3.1:視圖組件(Views)SimpleAdapter構(gòu)造函數(shù)publicSimpleAdapter(Contextcontext,List<?extendsMap<String,?>>data,intresource,String[]from,int[]to)參數(shù):context
關(guān)聯(lián)SimpleAdapter運行著的視圖的上下文。data
一個Map的列表。在列表中的每個條目對應(yīng)列表中的一行,應(yīng)該包含所有在from中指定的條目resource一個定義列表項目的視圖布局的資源唯一標識。布局文件將至少應(yīng)包含哪些在to中定義了的名稱。from
一個將被添加到Map上關(guān)聯(lián)每一個項目的列名稱的列表to應(yīng)該在參數(shù)from顯示列的視圖。這些應(yīng)該全是TextView。在列表中最初的N視圖是從參數(shù)from中最初的N列獲取的值。3.1:視圖組件(Views)SimpleAdapter//創(chuàng)建列表數(shù)據(jù)適配器ListAdapteradapter=newSimpleAdapter(ListActAct.this, mItems, R.layout.row_ui, mColumnNames,mViewIds);ListActAct.this:適配器上下文mItems:數(shù)組形式的記錄集,可以得到展現(xiàn)的記錄數(shù)R.layout.row_ui:列表視圖的行視圖資源ID,定義每一行的布局mColumnNames:每行數(shù)據(jù)的列名數(shù)組mViewIds:顯示每行數(shù)據(jù)的組件資源ID數(shù)組,定義哪列由哪一個組件顯示設(shè)置數(shù)據(jù)適配器,綁定數(shù)據(jù)setListAdapter(adapter);3.1:視圖組件(Views)ArrayAdapterArrayAdapter(Context
context,inttextViewResourceId,
List<T>objects)ArrayAdapter<String>aaData=newArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data);
This:上下文ContextR.layout.simple_list_item_1:定義列表項模板Data:顯示的數(shù)據(jù)設(shè)置數(shù)據(jù)適配器,綁定數(shù)據(jù)setAdapter(adapter);3.1:視圖組件(Views)SimpleCursorAdapter
newSimpleCursorAdapter(Contextcontext,intlayout,Cursor
c,String[]from,int[]to)參數(shù)解釋:context
.當前環(huán)境上下文。layout:要綁定的布局文件。c:從數(shù)據(jù)庫返回的數(shù)據(jù),存放在Cursor中。from:對應(yīng)要綁定的數(shù)據(jù)庫中的字段名。to:對應(yīng)要綁定的控件ID。3.1:視圖組件(Views)注意:傳入的cursor必須要有“_id”這個字段,Cursor會根據(jù)這個字段進行逐一的數(shù)據(jù)綁定,如果數(shù)據(jù)庫中沒有“_id”,則利用SimpleCursorAdapter綁定就會報錯。一定要以數(shù)據(jù)庫作為數(shù)據(jù)源的時候,才能使用SimpleCursorAdapter,這里特別需要注意的一點是:不要忘了在AndroidManifest.xml文件中加入權(quán)限<uses-permissionandroid:name="android.permission.READ_CONTACTS"></uses-permission>
3.1:視圖組件(Views)列表視圖(ListView)setContentView和inflate區(qū)別:setContentView()一旦調(diào)用,layout就會立刻顯示UI;inflate只會把Layout形成一個以view類對象的實例,有需要時再用setContentView(view)顯示出來。
一般在activity中通過setContentView()將界面顯示出來,但是如果在非activity中如何對控件布局設(shè)置操作了,這需LayoutInflater動態(tài)加載在程序中動態(tài)加載以上布局:
LayoutInflaterflater=LayoutInflater.from(this);
Viewview=flater.inflate(R.layout.example,null);
獲取布局中的控件。
button=(Button)view.findViewById(R.id.button);
textView=(TextView)view.findViewById(R.id.tview);
3.1:視圖組件(Views)LayoutInflater:具體作用:1、對于一個沒有被載入或者想要動態(tài)載入的界面,都需要使用LayoutInflater.inflate()來載入;2、對于一個已經(jīng)載入的界面,就可以使用Activiyt.findViewById()方法來獲得其中的界面元素。獲得LayoutInflater實例的三種方式1.LayoutInflaterinflater=getLayoutInflater();//調(diào)用Activity的getLayoutInflater()2.LayoutInflaterlocalinflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);3.LayoutInflaterinflater=LayoutInflater.from(context);3.1:視圖組件(Views)LayoutInflater.inflate()方法介紹:publicViewinflate(intresource,ViewGrouproot):reSource:View的layout的IDroot:如果提供root(不傳null)時,返回值其實就是這個root,這個方法就是把xml解析成view之后掛載這個root下。
如果傳null(不提供root),返回值是View,它就是當前xml布局里面的根節(jié)點。3.1:視圖組件(Views)列表視圖(ListView)設(shè)置列表視圖的表頭和表腳this.getListView().addHeaderView( this.getLayoutInflater().inflate(R.layout.header_view,null), null,false);this.getListView().addFooterView( this.getLayoutInflater().inflate(R.layout.footer_view,null), null,false);參數(shù)說明:this.getLayoutInflater().inflate(R.layout.foot
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度個人住房貸款電子合同實施細則3篇
- 二零二五年度國際物流出口貨物代理全面服務(wù)合作協(xié)議2篇
- 共享經(jīng)濟模式創(chuàng)新合作框架協(xié)議
- 環(huán)保產(chǎn)業(yè)園區(qū)運營合作協(xié)議
- 2024年貨場支持性租賃合同
- 2024年疾病醫(yī)療費用分擔協(xié)議3篇
- 2025年度特許經(jīng)營合同特許經(jīng)營范圍和經(jīng)營條件規(guī)定3篇
- 商標注冊申請委托代理協(xié)議
- 2024年石油化工生產(chǎn)線設(shè)備采購合同
- 五年級數(shù)學(小數(shù)乘除法)計算題專項練習及答案
- 第18課《天下第一樓(節(jié)選)》 統(tǒng)編版語文九年級下冊
- 活動策劃部培訓課件
- 江蘇省鹽城市2022-2023學年八年級上學期期末歷史試題
- 稻草購銷合同模板
- 執(zhí)法中隊競聘演講稿
- 國有企業(yè)員工守則
- CSR社會責任管理手冊模板
- 毛澤東軍事思想概述(新)
- 蘇教版六年級數(shù)學上冊集體備課記載表
- 錨桿框格梁施工技術(shù)交底
- 商戶清場協(xié)議書
評論
0/150
提交評論