You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android开发:如何将Spinner选中内容同步显示到TextView中

Android Spinner 选中内容同步到TextView 完整实现方案

步骤1:配置strings.xml资源

首先在res/values/strings.xml中定义Spinner所需的字符串数组:

<resources>
    <!-- 其他已有的字符串资源 -->
    <string-array name="spinner_items">
        <item>cat</item>
        <item>dog</item>
        <!-- 可自行添加更多词条 -->
    </string-array>
</resources>

步骤2:配置布局文件

在你的Activity对应布局文件(如activity_main.xml)中添加Spinner和目标TextView控件:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp">

    <Spinner
        android:id="@+id/Sababspinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        <!-- 直接绑定xml中的字符串数组,无需手动构建Adapter -->
        android:entries="@array/spinner_items"/>

    <TextView
        android:id="@+id/tv_show_selected"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:textSize="18sp"/>

</LinearLayout>

步骤3:Activity逻辑实现

  • Spinner不支持setOnItemClickListener,你原有代码的写法是错误的,必须使用setOnItemSelectedListener,运行时调用前者会直接抛出异常。

Java版本实现

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
    // 声明用于展示选中内容的TextView
    private TextView tvShowSelected;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        // 初始化控件
        Spinner sababspinner = findViewById(R.id.Sababspinner);
        tvShowSelected = findViewById(R.id.tv_show_selected);
        
        // 设置选中监听器
        sababspinner.setOnItemSelectedListener(this);
    }

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        // 获取当前选中的字符串
        String selectedText = parent.getItemAtPosition(position).toString();
        // 同步显示到TextView
        tvShowSelected.setText(selectedText);
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {
        // 无选中项时的默认展示内容
        tvShowSelected.setText("未选择任何词条");
    }
}

可选:手动构建Adapter的补充写法

如果你不想在布局中绑定entries属性,也可以在代码中手动加载字符串数组构建Adapter:

// 加载string.xml中的数组构建Adapter
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
        R.array.spinner_items, android.R.layout.simple_spinner_item);
// 设置下拉列表样式
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// 给Spinner设置Adapter
sababspinner.setAdapter(adapter);

Kotlin版本实现(可选参考)

class MainActivity : AppCompatActivity(), AdapterView.OnItemSelectedListener {
    private lateinit var tvShowSelected: TextView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        
        val sababspinner = findViewById<Spinner>(R.id.Sababspinner)
        tvShowSelected = findViewById(R.id.tv_show_selected)
        
        sababspinner.onItemSelectedListener = this
    }

    override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
        val selectedText = parent?.getItemAtPosition(position).toString()
        tvShowSelected.text = selectedText
    }

    override fun onNothingSelected(parent: AdapterView<*>?) {
        tvShowSelected.text = "未选择任何词条"
    }
}

内容的提问来源于stack exchange,提问作者Jaloliddin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 16:15:09