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();
}
});