Android Spinner 获取当前值

在Android开发中,Spinner是一种常用的UI控件,用于显示下拉列表。当用户选择一个选项时,我们通常需要获取当前选中的值。本文将介绍如何使用代码获取Spinner的当前值。

1. 创建Spinner

首先,我们需要在XML布局文件中创建Spinner控件。以下是一个简单的例子:

<Spinner
    android:id="@+id/spinner"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

这里我们创建了一个id为"spinner"的Spinner控件。

2. 绑定数据

接下来,我们需要将数据绑定到Spinner上。在Android中,通常使用适配器(Adapter)来完成这个任务。以下是一个示例:

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

// 创建一个数组适配器
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
        R.array.planets_array, android.R.layout.simple_spinner_item);

// 设置下拉菜单的样式
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

// 将适配器绑定到Spinner
spinner.setAdapter(adapter);

在上面的代码中,我们首先获取由id指定的Spinner控件。然后,我们使用createFromResource方法创建一个数组适配器,并将其绑定到Spinner上。

我们还可以自定义适配器,以适应特定的需求。例如,如果我们有一个包含自定义对象的列表,并且想要在Spinner中显示特定字段,可以创建一个自定义适配器并重写getView方法。

3. 获取当前值

一旦我们绑定了数据到Spinner上,我们就可以使用代码来获取当前选中的值。以下是一种常用的方法:

Spinner spinner = findViewById(R.id.spinner);
String selectedValue = spinner.getSelectedItem().toString();

在上面的代码中,我们首先获取由id指定的Spinner控件。然后,我们使用getSelectedItem方法获取当前选中的项,返回一个对象。由于我们需要获取该项的值,并将其转换为字符串,所以我们使用toString方法。

现在,selectedValue变量将包含Spinner当前选中的值。

示例应用

为了更好地理解,我们来编写一个示例应用,演示如何获取Spinner的当前值。

1. 创建布局

首先,我们需要创建一个包含Spinner和按钮的布局。在activity_main.xml中,添加以下代码:

<RelativeLayout xmlns:android="
    xmlns:tools="
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="16dp"
    android:paddingTop="16dp"
    android:paddingRight="16dp"
    android:paddingBottom="16dp"
    tools:context=".MainActivity">

    <Spinner
        android:id="@+id/spinner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/spinner"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="16dp"
        android:text="Get Value" />

</RelativeLayout>

在上面的布局中,我们创建了一个id为"spinner"的Spinner控件和一个id为"button"的按钮。

2. 创建适配器

接下来,我们需要创建一个适配器来绑定数据到Spinner上。在MainActivity.java中,添加以下代码:

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

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    private Spinner spinner;
    private Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        spinner = findViewById(R.id.spinner);
        button = findViewById(R.id.button);

        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
                R.array.planets_array, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String selectedValue = spinner.getSelectedItem().toString();
                Toast.makeText(MainActivity.this, "Selected value: " + selectedValue, Toast.LENGTH_SHORT).show();
            }
        });