CH9 清單與選單.

Slides:



Advertisements
Similar presentations
第2章  Android应用的界面编程.
Advertisements

08 CSS 基本語法 8-1 CSS 的演進 8-2 CSS 樣式規則與選擇器 8-3 連結HTML 文件與CSS 樣式表
四資二甲 第三週作業 物件導向程式設計.
實驗五:多媒體播放器選單介面.
陳維魁 博士 儒林圖書公司 第九章 資料抽象化 陳維魁 博士 儒林圖書公司.
ArrayAdapter & Spinner
Project 2 JMVC code tracing
手持式裝置之隨身照護應用 Android開發環境設定 鐘國家 老師.
手持式裝置之隨身照護應用 Android開發環境設定 鐘國家 老師.
Ch06 再談選單元件 物件導向系統實務.
Chapter 6 Advanced UI Design.
Android智慧型手機程式設計實務應用班
客戶端的檔案上傳 HtmlInputFile檔案控制項 上傳單一檔案 同時上傳多個檔案.
Android基本程式設計 建國科技大學 資管系 饒瑞佶.
資料庫操作.
Chapter 6 進階UI設計.
類別(class) 類別class與物件object.
SQL Stored Procedure SQL 預存程序.
R教學 安裝RStudio 羅琪老師.
實驗十四:顯示與控制地圖.
網頁切換移轉 JS vs. ASP.NET.
Echo Server/Client Speaker:Fang.
Android App簡介及 App Inventor 2體驗 靜宜大學資管系 楊子青
Dialog Programming What is Dialog Programming? 新增Screen與設定Attributes
Java 程式設計 講師:FrankLin.
網頁切換移轉 JS vs. ASP.NET.
JAVA 程式設計與資料結構 第四章 陣列、字串與數學物件.
表單(Form).
VS.NET 2003 IDE.
網頁程式設計 本章投影片錄自HTML5、CSS3、RWD、jQuery Mobile跨裝網頁設計 陳惠貞 著 碁峰資訊股份有限公司出版
PLC-GPPW軟體使用教學 授課教師:張祖烈
主编:钟元生 赵圣鲁.
Ch20. 計算器 (Mac 版本).
第 19 章 XML記憶體執行模式.
會聲會影10 卓傳育 博士 電腦與通訊科技研發中心 會聲會影10教學-基本功能
ArrayAdapter & Spinner
網頁程式概論 建國科技大學資管系 饒瑞佶 2015/9 V1 2016/4 V2 2016/9 V3.
主编:钟元生 赵圣鲁.
Visual C++ Windows Programming
CH1 我的第一個App與變數宣告.
Install OpenCV C++ with Visual Studio 2017 on Windows PC
如何利用範本來製作網頁.
進階UI元件:Spinner與接合器 靜宜大學資管系 楊子青
GUI Title and GUI Status
選單.
VS.NET 2003 IDE.
GridView.
GridView操作 (II).
Android視窗介面 建國科技大學 資管系 饒瑞佶 2010/10.
Android WebService Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
Dialog Programming What is Dialog Programming? 新增Screen與設定Attributes
Video 影像 (VideoPlayer 影像播放器、Camcorder 錄影機) 靜宜大學資管系 楊子青
取得與安裝TIDE 從TIBBO網站取得TIDE
陣列與結構.
進階UI元件:ListView元件以及複選 靜宜大學資管系 楊子青
Access 2003 練習與作業
實驗十:影片播放.
Brief Guide of FrontPage
Quiz1 繳交期限: 9/28(四).
清單的CSS樣式.
Activity的生命週期: 播放音樂與影片 靜宜大學資管系 楊子青
多國語系 建國科技大學 資管系 饒瑞佶.
影像顯示.
網路上免費使用的Medline PubMed-Medline.
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
SQLite資料庫 靜宜大學資管系 楊子青.
Chapter 4 Multi-Threads (多執行緒).
Develop and Build Drives by Visual C++ IDE
進階UI元件:Spinner與接合器 靜宜大學資管系 楊子青
InputStreamReader Console Scanner
Presentation transcript:

CH9 清單與選單

一、ListView ListView的目的是以可捲動清單形式提供一串項目讓使用者從中選擇,這些項目的來源可以是List或陣列,由指定的Adapter自動建立成顯示的清單。 使用ListView的一般步驟如下: 在XML佈局檔中利用<ListView>建立ListView,並設定相關屬性。 以資料來源與清單樣式建立ArrayAdapter物件。

將此ArrayAdapter物件指定給ListView元件。 ListView主要處理的事件是「onItemClick」,這事件在清單項目被敲擊時觸發,並以「AdapterView.OnItemClickListener」偵聽器偵聽。 ListView Test範例 在ListView範例中,當敲下一清單項目,會將此項目的內容顯示在清單上方的TextView中。 詳細內容請參考原書。

ListView元件另一個常用的事件是「onItemSelected」,它對應的偵聽器物件為「OnItemSelectedListener」,必須實作的方法為「onItemSelected(AdapterView<?> parent, View view, int position, long id)」與「onNothingSelected(AdapterView<?> parent)」。

二、 ListActivity ListActivity是一個顯示項目清單,並可以藉由事件與使用者互動的活動,它擁有一個<ListView>元件可以透過Adapter與不同資料來源繫結在一起。 ListActivity有一個預設的佈局,因此可以不必自己設計佈局檔。 另外要注意一點,在Java程式碼中包含清單的活動不再是延伸自Activity,而是延伸自「ListActivity」。

ListAdaptive Test範例 範例中我們不再用Adapter將清單內容繫結至陣列資料,而是繫結至字串資源。 需要注意2點: Adapter的型態需從「String」改為「CharSequence」 。 改用Adapter的「createFromResource()」靜態方法建立Adapter。 createFromResource()方法需要3個參數,第1個參數仍是此物件所在的活動,第2個參數指定資料來源的字串資源,第3個參數則為設定清單的形式。 詳細內容請參考原書(code 9-3)。

三、ExpandableList View 在第1 層的群組是一維的,而第2層的子清單為二維;一般我們會在Java程式中使用「Java.util.List」類別宣告這二層清單,然後透過「Java.util.Map」類別將資料放置於清單內。

ExpandableList Test範例 在清單對應的「SimpleExpandableListAdapter」中指定群組與子清單樣式均為「android.R.layout.simple_expandable_list_item_2」。 使用者敲擊一個子選單項目時,用Toast物件顯示此項目所在群組與子選單索引值。 詳細內容請參考原書。 可展開清單主要處理以下事件: onChildClick事件 子清單項目被敲擊時觸發,需建立OnChildClickListener物件並實作public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id)方法。

onGroupClick事件 onGroupCollapse事件 onGroupExpand事件 組項目被敲擊時觸發,需建立OnGroupClickListener物件並實作public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id)方法。 onGroupCollapse事件 當子清單項目收合時觸發,需建立OnGroupCollapseListener物件並實作public void onGroupCollapse(int groupPosition)方法。 onGroupExpand事件 當子清單項目展開時觸發,需建立OnGroupExpandListener物件並實作public void onGroupExpand(int groupPosition)方法。

四、Spinner 下拉清單(Spinner)提供一組資料項目供使用者選擇,在預設情況下Spinner會顯示目前選擇的項目內容。 當使用者從清單中選擇一個項目,清單將關閉且此項目內容會顯示於Spinner上,同時觸發onItemSelected事件。

要使用下拉清單,應依循以下步驟: Spinner Test範例 在佈局中加入<Spinner>元件。 建立資料來源,從資源檔或Java程式中建立均可以。 建立Adapter與指定清單樣式,常用的樣式佈局有「simple_spinner_item」與「simple_spinner_dropdown_item」。 建立事件處理機制。 Spinner Test範例 Spinner資料來源定義於strings.xml資源檔。 當使用者從清單中敲選一個項目,會以Toast物件顯示所敲項目位置。 詳細內容請參考原書。

Spinner有幾個常用的屬性,值得留意一下: dropDownVerticalOffset:設定清單顯示時與Spinner元件的垂直距離。 dropDownWidth:設定清單顯示的寬度。 popupBackground:設定清單顯示時的背景圖形或顏色。 spinnerMode:設定清單出現的模式,可以設定為「dropdown」下拉式(出現於Spinner下方),或「dialog」以獨自的畫面出現。 取出選項值 變數 = Parent.getItematPosition(pos).ToString;

五、選單 對Android系統而言,選單是Activity的一部份,因此選單的建立必須含在Activity類別定義以內。 Android提供2種形式的選單:選項選單(Option Menu)與文意選單(Context Menu) 。 選單主要處理的方法有2個:建立選單的方法(對2種選單建立所使用的方法不同)與選擇選項後回應的方法。

在選單中加入選項有2種方式,一是透過Java程式碼在建立選單的方法中,逐項將選項加入;另一種方式是先建立選單的XML定義檔,然後在Java程式碼建立選單的方法中引入此定義檔。 當使用者從選項選單選擇一個項目,系統會呼叫活動的onOptionsItemSelected()方法,在這方法中可以使用getItemId()方法取得被選選項id,然後依被選選項進行希望的處理動作。

OptionMenu Test範例 建立含3個選項的選項選單。 選擇選項後呼叫對應的處理方法,都是以Toast顯示被選選項標題。 詳細內容請參考原書(code 9-10)。 執行專案時須按[menu] 才會顯示menu

ContextMenu 功能表選單(ContextMenu) 功能表選單的作用是對特定視圖元件提供處理選擇,當長按住(2秒以上)一個登錄有功能表選單的視圖元件,此功能表選單就會以浮動選單的方式出現。

建立功能表選單的步驟如下: ContextMenu Test範例 用registerForContextMenu()方法為視圖元件登錄文意選單。 在活動類別中實作onCreateContextMenu()方法,當登錄有功能表選單的視圖元件受到長按動作,系統會呼叫此方法建立功能表選單。 當使用者從功能表選單選擇一個項目,系統會呼叫活動的onContextItemSelected()方法,在這方法中可以使用getItemId()方法取得被選選項的id,然後依被選選項進行希望的處理動作。 ContextMenu Test範例 為TextView元件登錄及建立含2個選項的文意選單,而從選單中選擇一個選項會呼叫對應的處理方法,以Toast顯示被選選項標題。 詳細內容請參考原書(code 9-11)。

建立子選單 不論是選項選單或是文意選單都能對其選項建立子選單,建立方式是先用選單的addSubMenu()方法,建立第1層所含子選單的項目,再用這些含子選單項目的add()方法建立第2層選項。 SubMenu Test範例 先在文意選單中加入2個有子選單的項目:編輯與檢查。 編輯的子選單有2個選項(編輯檔案、編輯資料表),而檢查的子選單有3個選項(檢查有效日期、檢查授權、檢查預算)。 詳細內容請參考原書 (code 9-12)。