Presentation is loading. Please wait.

Presentation is loading. Please wait.

CH9 清單與選單.

Similar presentations


Presentation on theme: "CH9 清單與選單."— Presentation transcript:

1 CH9 清單與選單

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

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

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

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

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

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

8 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)方法。

9 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)方法。

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

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

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

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

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

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

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

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

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


Download ppt "CH9 清單與選單."

Similar presentations


Ads by Google