Android官方文档—User Interface(Input Controls)(Spinners)

下拉列表

下拉列表提供了从集合中选择一个值的快速方法。在默认状态下,微调器显示其当前选定的值。触摸微调器会显示一个包含所有其他可用值的下拉菜单,用户可以从中选择一个新值。

您可以使用Spinner对象向布局添加微调器。您通常应该在XML布局中使用<Spinner>元素执行此操作。例如:

<Spinner
    android:id="@+id/planets_spinner"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" />

要使用选项列表填充微调器,您需要在Activity或Fragment源代码中指定SpinnerAdapter。

使用用户选择填充微调器


您为微调器提供的选择可以来自任何源,但必须通过SpinnerAdapter提供,例如,如果数组中有选项,则提供ArrayAdapter;如果数据库查询中有选项,则必须提供CursorAdapter。

例如,如果预先确定了微调器的可用选项,则可以为它们提供在字符串资源文件中定义的字符串数组:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="planets_array">
        <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>

使用像这样的数组,您可以使用Activity或Fragment中的以下代码,使用ArrayAdapter实例为微调器提供数组:

Spinner spinner = (Spinner) findViewById(R.id.spinner);
// Create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
        R.array.planets_array, android.R.layout.simple_spinner_item);
// Specify the layout to use when the list of choices appears
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
spinner.setAdapter(adapter);

createFromResource()方法允许您从字符串数组创建ArrayAdapter。此方法的第三个参数是布局资源,用于定义所选选项在微调控件中的显示方式。 simple_spinner_item布局由平台提供,是您应该使用的默认布局,除非您想为微调器的外观定义自己的布局。

然后,您应该调用setDropDownViewResource(int)来指定适配器应该用于显示微调器选项列表的布局(simple_spinner_dropdown_item是平台定义的另一个标准布局)。

调用setAdapter()将适配器应用于Spinner。

响应用户选择


当用户从下拉列表中选择一个项目时,Spinner对象将接收一个项目选择的事件。

扫描二维码关注公众号,回复: 3992425 查看本文章

要为微调器定义选择事件处理程序,请实现AdapterView.OnItemSelectedListener接口和相应的onItemSelected()回调方法。例如,这是Activity中接口的实现:

public class SpinnerActivity extends Activity implements OnItemSelectedListener {
    ...

    public void onItemSelected(AdapterView<?> parent, View view,
            int pos, long id) {
        // An item was selected. You can retrieve the selected item using
        // parent.getItemAtPosition(pos)
    }

    public void onNothingSelected(AdapterView<?> parent) {
        // Another interface callback
    }
}

AdapterView.OnItemSelectedListener需要onItemSelected()和onNothingSelected()回调方法。

然后,您需要通过调用setOnItemSelectedListener()来指定接口实现:

Spinner spinner = (Spinner) findViewById(R.id.spinner);
spinner.setOnItemSelectedListener(this);

如果使用Activity或Fragment实现AdapterView.OnItemSelectedListener接口(例如上面的示例中),则可以将其作为接口实例传递。

猜你喜欢

转载自blog.csdn.net/weixin_42703445/article/details/83860935
今日推荐