2010年1月30日 星期六

下拉元件

下拉元件分為三個部份,一個是畫面上的元件,一個是程式,還有就是下拉的內容

(為了完整呈現原始碼,所以在程式碼的&使用時要拿掉)

1.畫面main.xml加入



@+id/object:為元件的id=object
layout_width=" fill_parent="">layout_hight="wrap_content"為元件的高度=元件高度
drawSelectorOnTop="true" 指定這個下拉選單是否可以顯示在其他選單的上層,只有在多層選單上才會顯示出效果
prompt 指定下拉選單彈出選單選項提示(彈出選單的標題)

2.設定下拉元件的內容
在value下新增一個檔案,檔名為arrays.xml 這個檔案可用來放置像下拉選單的內容
因為是新的檔案,所以要在檔案中放入

<&?xml version="1.0" encoding="utf-8"?>
<&resources>
<&!-- obj下拉內容 -->
<&string-array name="obj">
<&item>男
<&item>女
<&/string-array>

<&/resources>




如果arrays.xml已存在,則只要加入<&string-array>段就可以了

3.程式 xxx.java加入

(外層)Spinner obj;

(外層)
private void initLayout(){
obj = (Spinner)findViewById(R.id.obj);
ArrayAdapter adp = ArrayAdapter.createFromResource(
this, R.array.sexs, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
obj.setAdapter(adp);
}

外層就是指
@Override
public void onCreate的上一層

在外層宣告 obj是Spinner

再設定一個自訂函數initLayout 用來初始化元件

obj = (Spinner)findViewById(R.id.obj); 指定程式中的obj為畫面上的Spinner

設定adapter(接口) 參考備註1 用來連結資料到下拉選單中

ArrayAdapter adp= ArrayAdapter.createFromResource(
this, R.array.obj, android.R.layout.simple_spinner_item);

這裏使用的是陣列型的接口.接回名稱訂為adp. 裏面包含三個參數
參數1是這個Activity本身(用this 表示)
參數2是資料來源也就是在步驟2中設定的資料。 R.array.obj 中的obj就是在步驟2中設定的name="obj"
參數3是傳入的陣列。simple_spinner_item為Android陣列所內建的預設下拉選單選項格式

setDropDownViewResource 為設定資源到下拉選單中

obj.setAdapter(adp);設定下拉元件的接口


最後在onCreate中加入執行initLayout();就可以了

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initLayout(); <-- 這一行
}

執行一下程式就可以看到效果了


備註1
在android中並不允許直接將字串陣列套用在介面元件中。介面選單的項目,都必預透過Adapter來連結。書上稱Adapter為接口。加了adapter主要是保持程式的使用彈性。
adapter有分為很多種
ArrayAdapter 讀入程式中已宣告的陣列,並轉換成介面元件看的懂的接回元件
SimpleAdapter 從XML文字字串檔讀入陣列
CursorAdapter 從ContentProvider讀入陣列.主要和 DB有關。像讀入通訊錄之類的

沒有留言:

張貼留言