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
相关产品推荐
相关产品推荐

