Android UI 之Spinner的使用

Android UI 之Spinner的使用

Spinner 允许用户从一个集合中选择一项数据。在默认情况下, Spinner 显示的就是用户当前的选择。当用户点击 Spinner 的时候,会弹出一个带有数据的弹出菜单或者窗口。

Spinner

为应用程序添加Spinner

当我们在需要用到 Spinner 的时候,我们可以再Layout文件中添加一个 Spinner

<Spinner 
    android:id="@+id/spinner_use"
    android:layout_width="wrap_context
    andorid:layout_height="wrap_context" />

Spinner 有两种显示数据的方式:

  • MODE_DIALOG 在一个窗口中显示数据供用户选择。
  • MODE_DROPDOWN 使用弹出菜单显示数据供用户选择。

在Layout中定义的默认为MODE_DROPDOWN,如果你需要一个窗口,可以在spinnerMode属性中设置:

android:spinnerMode="dialog"。

可以通过调用 setPromptId 方法为之加上一个标题,该属性仅在dialog模式下有效。如下:

android::prompt="title"

为Spinner增加数据

SpinnerListView 一样是 AdapterView ,因此想要为 Spinner 填充数据,就应该在你的Activity或者Fragment中定义一个SpinnerAdapter。

例如我们要在应用程序中添加一个Spinner,其中包含“First”“second”“Third”这几个数据:

Spinner sp = (Spinner) findViewById(R.id.spinner_use);
ArrayAdapter<String> array = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item,
            new String[]{"First", "second", "third"});
array.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sp.setAdapter(array);

simple_spinner_item 和 simple_spinner_dropdpwn_item 是系统定义常量,默认的布局文件。simple_spinner_item 定义的是 Spinner 中当前选择的项的外观。simple_spinner_dropdpwn_item则是弹出菜单中List的外观。我们必须为 Spinner 指定弹出菜单外观和当前选择项的外观。

Spinner 中数据的显示顺序就是按照“First”“second”“Third”这个顺序排列。初始化后“First”成为默认选择。

响应用户选择

当用户选择了一个不是已经选择的项时,我们可能需要知道用户选择的是什么,这便需要我们响应用户的选择。

要处理用户选择的事件,必须实现 OnItemSelectedListener 接口和对应的 onItemSelected 方法。

例如,在上面代码的基础上,我们想要将用户所选择的 item 通过 Toast 显示出来:

sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        String item[] = new String[]{"First", "second", "third"};
        Toast.makeText(MainActivity.this, item[position], Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {
        // do something
    }
});

因为 OnItemSelectedListener 需要实现 onItemSelected() 和 onNothingSelected() 两个方法,所以也将 onNothingSelected() 加入到代码中。

你可能感兴趣的:(UI,android,Spinner)