ListView
ListView是一種用于垂直顯示的列表控件,如果顯示內(nèi)容過(guò)多,則會(huì)出現(xiàn)垂直滾動(dòng)條
ListView能夠通過(guò)適配器將數(shù)據(jù)和自身綁定,在有限的屏幕上提供大量?jī)?nèi)容供用戶選擇,所以是經(jīng)常使用的用戶界面控件
ListView支持點(diǎn)擊事件處理,用戶可以用少量的代碼實(shí)現(xiàn)復(fù)雜的選擇功能
建立一個(gè)“ListViewDemo”程序,包含四個(gè)控件,從上至下分別為TextView01、ListView01、 ListView02和 ListView03
ListViewDemo在XML文件中的代碼
在ListViewDemo.java文件中,首先需要為ListView創(chuàng)建適配器,并添加ListView中所顯示的內(nèi)容
第2行代碼通過(guò)ID引用了XML文件中聲明的ListView
第7行代碼聲明了適配器ArrayAdapter,第三個(gè)參數(shù)list說(shuō)明適配器的數(shù)據(jù)源為數(shù)組列表
第8行代碼將ListView和適配器綁定
在ListViewDemo.java文件中,首先需要為ListView創(chuàng)建適配器,并添加ListView中所顯示的內(nèi)容
第2行代碼通過(guò)ID引用了XML文件中聲明的ListView
第7行代碼聲明了適配器ArrayAdapter,第三個(gè)參數(shù)list說(shuō)明適配器的數(shù)據(jù)源為數(shù)組列表
第8行代碼將ListView和適配器綁定
下面的代碼聲明了ListView子項(xiàng)的點(diǎn)擊事件監(jiān)聽(tīng)器,用以確定用戶在ListView中,選擇的是哪一個(gè)子項(xiàng)
第1行的AdapterView.OnItemClickListener是ListView子項(xiàng)的點(diǎn)擊事件監(jiān)聽(tīng)器,同樣是一個(gè)接口,需要實(shí)現(xiàn)onItemClick()函數(shù)。在ListView子項(xiàng)被選擇后,onItemClick()函數(shù)將被調(diào)用
第3行的onItemClick()函數(shù)中一共有四個(gè)參數(shù),參數(shù)0表示適配器控件,就是ListView;參數(shù)1表示適配器內(nèi)部的控件,是ListView中的子項(xiàng);參數(shù)2表示適配器內(nèi)部的控件,也就是子項(xiàng)的位置;參數(shù)3表示子項(xiàng)的行號(hào)
第4行和第5行代碼用于顯示信息,選擇子項(xiàng)確定后,在TextView中顯示子項(xiàng)父控件的信息、子控件信息、位置信息和ID信息
第7行代碼是ListView指定剛剛聲明的監(jiān)聽(tīng)器
TabHost
Tab標(biāo)簽頁(yè)是界面設(shè)計(jì)時(shí)經(jīng)常使用的界面控件,可以實(shí)現(xiàn)多個(gè)分頁(yè)之間的快速切換,每個(gè)分頁(yè)可以顯示不同的內(nèi)容
下圖是Android系統(tǒng)內(nèi)置的Tab標(biāo)簽頁(yè),點(diǎn)擊“呼出/接聽(tīng)鍵”后出現(xiàn),用于電話呼出和查看撥號(hào)記錄、聯(lián)系人
Tab標(biāo)簽頁(yè)的使用
首先要設(shè)計(jì)所有的分頁(yè)的界面布局
在分頁(yè)設(shè)計(jì)完成后,使用代碼建立Tab標(biāo)簽頁(yè),并給每個(gè)分頁(yè)添加標(biāo)識(shí)和標(biāo)題
最后確定每個(gè)分頁(yè)所顯示的界面布局
每個(gè)分頁(yè)建立一個(gè)XML文件,用以編輯和保存分頁(yè)的界面布局,使用的方法與設(shè)計(jì)普通用戶界面沒(méi)有什么區(qū)別
tab1.xml文件代碼
qtab2.xml文件代碼
qtab3.xml文件代碼
在TabDemo.java文件中鍵入下面的代碼,創(chuàng)建Tab標(biāo)簽頁(yè),并建立子頁(yè)與界面布局直接的關(guān)聯(lián)關(guān)系
第8行代碼的聲明TabDemo類繼承與TabActivity,與以往繼承Activity不同,TabActivity支持內(nèi)嵌多個(gè)Activity或View
第12行代碼通過(guò)getTabHost()函數(shù)獲得了Tab標(biāo)簽頁(yè)的容器,用以承載可以點(diǎn)擊的Tab標(biāo)簽和分頁(yè)的界面布局。
第13行代碼通過(guò)LayoutInflater將tab1.xml文件中的布局轉(zhuǎn)換為Tab標(biāo)簽頁(yè)可以使用的View對(duì)象
第16行代碼使用addTab()函數(shù)添加了第1個(gè)分頁(yè),tabHost.newTabSpec("TAB1")表明在第12行代碼中建立的tabHost上,添加一個(gè)標(biāo)識(shí)為TAB1的Tab分頁(yè)
第17行代碼使用setIndicator()函數(shù)設(shè)定分頁(yè)顯示的標(biāo)題,使用setContent()函數(shù)設(shè)定分頁(yè)所關(guān)聯(lián)的界面布局
TabDemo示例的運(yùn)行結(jié)果如圖
在使用Tab標(biāo)簽頁(yè)時(shí),可以將不同分頁(yè)的界面布局保存在不同的XML文件中,也可以將所有分頁(yè)的布局保存在同一個(gè)XML文件中
第一種方法有利于在Eclipse開(kāi)發(fā)環(huán)境中進(jìn)行可視化設(shè)計(jì),并且不同分頁(yè)的界面布局在不同的文件中更加易于管理
第二種方法則可以產(chǎn)生較少的XML文件,同時(shí)編碼時(shí)的代碼也會(huì)更加簡(jiǎn)潔
聯(lián)系客服