搜尋此網誌

2010年6月13日 星期日

Android開發-Spinner應用


此次的程式 主要是練習下拉式選單 並且搭配Toast來顯示
Toast 介面元件的作用是彈出一個訊息框,快速在螢幕上顯示一小段訊息
這次的程式會學習到
1.Spinner的用法
2.Toast

main.xml

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
android:id="@+id/widget29"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="120px"
android:layout_y="112px"
>
</Spinner>
</AbsoluteLayout>

Spinnertest.java

package com.demo.android.spinnertest;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;


public class Spinnertest extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findview();
//建立一個ArrayAdapter物件,並且存放下拉式選單的內容
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,new String[]{"Screen","Keyboard","Mouse"});
//設定Spinner的樣式
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//設定adapter 將剛剛的下拉式選單內容 給這個widget
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(spinnerListener);

}

private void findview() {
spinner = (Spinner) findViewById(R.id.spinner);
}

private Spinner spinner;
//監聽下拉式選單 是否被選擇
private Spinner.OnItemSelectedListener spinnerListener= new Spinner.OnItemSelectedListener()
{
//如果被選擇
public void onItemSelected(AdapterView<?>adapterView, View v, int position, long id)
{
//利用Toast來顯示 Toast.LENGTH_LONG則表示 顯示時間長
//Spinnertest.this 則代表指向Spinnertest這個實例 若是寫成this則是指向OnItemSelectedListener這個實例
//最後用show()將Toast 元件顯示在螢幕上
Toast.makeText(Spinnertest.this, "You select"+adapterView.getSelectedItem().toString(), Toast.LENGTH_LONG).show();
}

//若是沒有選擇任何項目
public void onNothingSelected(AdapterView<?>adapterView)
{
Toast.makeText(Spinnertest.this, "You don't select anything", Toast.LENGTH_LONG).show();
}
};


}

2 則留言:

  1. 冒昧請教一下,
    若是我想寫多層的連動式下拉選單,
    要怎麼做呢?

    比方說第一個下拉選單 裡面有台北市, 桃園縣, 新北市...
    第二個下拉選單會因為第一個選單內容的不同而改變
    台北市 => 大安區, 中正區....
    桃園縣 => 桃園市, 平鎮市....
    ....

    苦惱好久, 我試著用if 去設定第二個下拉選單, 但好像不行~

    回覆刪除
  2. 一開始先定義
    陣列A:大安區,中正區
    陣列B:桃園市,平鎮市

    接著去抓下拉式選單,被點中的item是哪一個,再指定要取哪個陣列 再塞到另外一個adapter顯示出來 再試試吧

    回覆刪除