閱讀567 返回首頁    go 技術社區[雲棲]


Spinner用法案例

Spinner控件也是一種列表類型的控件,它的繼承關係如下:
java.lang.Object
   ↳ android.view.View
     ↳ android.view.ViewGroup
       ↳ android.widget.AdapterView<T extends android.widget.Adapter>
         ↳ android.widget.AbsSpinner
           ↳ android.widget.Spinner
android.widget.Spinner繼承了android.view.ViewGroup類。下麵安排一個案例如圖6-5,有兩個Spinner,顏色選擇Spinner和星座選擇Spinner。點擊顏色選擇Spinner右邊的 按鈕,如圖6-6所示,彈出單選對話框。
   


圖6-5 Spinner控件                           圖6-6 顏色選擇Spinner
點擊星座選擇Spinner右邊的 按鈕,如圖6-7所示,彈出列表對話框。
 


圖6-7 星座選擇Spinner
程序代碼請參考代碼清單6-3:
【代碼清單6-3】 chapter6_2/src/com/work/SpinnerActivity.java
public class SpinnerActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        final TextView txt2 = (TextView) findViewById(R.id.TextView02);
        Spinner s1 = (Spinner) findViewById(R.id.Spinner01);
        final ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
                this, R.array.colors, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        s1.setAdapter(adapter);
        s1.setOnItemSelectedListener(
                new OnItemSelectedListener() {
                    public void onItemSelected(
                            AdapterView<?> parent, View view, int position, long id) {
                            txt2.setText(adapter.getItem(position).toString());
                    }

                    public void onNothingSelected(AdapterView<?> parent) {
                    txt2.setText("沒選中的");
                    }
                });

        final TextView txt4 = (TextView) findViewById(R.id.TextView04);
        Spinner s2 = (Spinner) findViewById(R.id.Spinner02);
        ArrayAdapter<CharSequence> adapterC = new ArrayAdapter<CharSequence>(this,
                android.R.layout.simple_spinner_item, CONSTELLATIONS);
        adapterC.setDropDownViewResource(android.R.layout.simple_spinner_item);
        s2.setAdapter(adapterC);
        s2.setOnItemSelectedListener(
                new OnItemSelectedListener() {
                    public void onItemSelected(
                            AdapterView<?> parent, View view, int position, long id) {
                    txt4.setText(CONSTELLATIONS[position]);
                    }

                    public void onNothingSelected(AdapterView<?> parent) {
                    txt4.setText("沒選中的");
                    }
                });
    }
   
    static final String[] CONSTELLATIONS = new String[] {
    "白羊座", "金牛座", "雙子座",
    "巨蟹座", "獅子座", "處女座",
    "天枰座", "天蠍座", "射手座",
    "魔蠍座", "水瓶座", "雙魚座"
        };
}
第一個顏色選擇Spinner數據來源於Values文件夾內的arrays.xml文件,
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="colors">
        <item>紅色</item>
        <item>橙色</item>
        <item>黃色</item>
        <item>綠色</item>
        <item>藍色</item>
        <item>紫色</item>
    </string-array>
</resources>
通過下麵的方法從一個資源XML文件中加載數據,創建一個數組類的適配器對象,布局文件是使用係統提供的layout.simple_spinner_item,這裏布局文件設置的是Spinner布局樣式。
   final ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
              this, R.array.colors, android.R.layout.simple_spinner_item);
而彈出的下拉列表的樣式是由Spinner的適配器的setDropDownViewResource()方法設置的。
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
第二個Spinner用於星座選擇,數據是用數組存儲的。這兩個Spinner的setOnItemSelectedListener()方法的事件處理如下:
s1.setOnItemSelectedListener(
      new OnItemSelectedListener() {
           public void onItemSelected(
                  AdapterView<?> parent, View view, int position, long id) {
                  txt2.setText(adapter.getItem(position).toString());
            }

            public void onNothingSelected(AdapterView<?> parent) {
                  txt2.setText("沒選中的");
             }
});
其中的onItemSelected(AdapterView<?> parent, View view, int position, long id)方法是選中選擇項目時觸發的,其中的position選擇項目的位置,id是選擇項目的編號。而什麼都不選的方法是onNothingSelected(AdapterView<?> parent)。
                                出自《Android開發案例驅動教程》第六章

最後更新:2017-04-02 06:51:42

  上一篇:go WPF概述
  下一篇:go 免費Java反編譯工具decompiler