Android控件篇13之 Spinner

本文介绍Spinner控件。下面的内容都是参考"Spinner测试代码"进行的讲解,感兴趣的可以进行测试验证。

1. Spinner基本使用

1.1 Spinner的父类

下面是Spinner的继承关系图

java.lang.Object
  ↳ android.view.View
    ↳ android.view.ViewGroup
      ↳ android.widget.AdapterView
        ↳ android.widget.AbsSpinner
          ↳ android.widget.Spinner

1.2 Spinner基本定义

<Spinner
    android:id="@+id/spin_planet"        
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:prompt="@string/planet"
    />

1.3 Spinner列表

下面介绍通过内部资源定义Spinner下拉列表选择内容的方法。建立res/arrays.xml,并输入以下内容:

<?xml version="1.0" encoding="utf-8"?>
<resources>

<string-array name="array_planets">
    <item>Mercury</item>
    <item>Venus</item>
    <item>Earth</item>
    <item>Mars</item>
    <item>Jupiter</item>
    <item>Saturn</item>
    <item>Uranus</item>
    <item>Neptune</item>
</string-array>

</resources>

然后再初始化Spinner时,调用该资源。

public class SpinnerTest extends Activity {

    private Spinner mSpinPlanet;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // 设置Spinner
        mSpinPlanet = (Spinner) findViewById(R.id.spin_planet);            
        // 设置ArrayAdapter对应的数据和布局
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
                R.array.array_planets, android.R.layout.simple_spinner_item);
        // 设置ArrayAdapter的下拉布局
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        // 将该ArrayAdapter赋值给Spinner
        mSpinPlanet.setAdapter(adapter);
        // 设置选择监听函数
        mSpinPlanet.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, 
                    int pos, long id) {
                // 获取array_planets获取对应的String数组
                String[] planets = getResources().getStringArray(R.array.array_planets);
                // 获取pos对应的字符串
                String planet = planets[pos];
                // 提示
                showToast("select "+planet);
            }   

            // Spinner未选择的回调函数
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
                showToast("Nothing Selected!");
            }   
        }); 
    }   

    private void showToast(CharSequence msg) {
        Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
    }   
}
by skywang
Previous     Next