Kotlin开发求助:切换Spinner选项时调用函数仍无法更新目标Spinner
问题分析与解决
首先看你的代码,最明显的问题是变量混淆:你在countrySpinner的选中回调里触发更新,但updateCurrencySpinner()函数里判断的是serviceSpinner.selectedItemPosition,而非countrySpinner的选中位置。这就导致不管怎么切换countrySpinner,只要serviceSpinner的选中项没变,计算出的currency值就不会改变,currenciesSpinner自然不会更新。
解决步骤
- 修正变量错误:将函数中判断的Spinner替换为
countrySpinner,代码修改如下:
private fun updateCurrencySpinner() { // Update selected item from the currency spinner based on the country spinner val currency = when (countrySpinner.selectedItemPosition) { 0 -> 0 1 -> 0 2 -> 1 3 -> 2 else -> 0 } currenciesSpinner.setSelection(currency) }
验证Adapter状态:确认
currenciesSpinner已正确绑定Adapter,且Adapter的数据源长度足够覆盖你设置的currency值(比如当currency取2时,Adapter至少要有3个item,索引从0开始)。如果Adapter为空或数据不足,setSelection不会产生任何视觉变化。检查调用时机:确保
currenciesSpinner的Adapter已在主线程完成初始化,且调用setSelection时数据已加载完成。如果是异步加载数据,需在数据加载完成后再触发updateCurrencySpinner()。
你还可以在updateCurrencySpinner()中添加日志,打印countrySpinner.selectedItemPosition和计算出的currency值,确认这些值是否随countrySpinner的切换而变化,快速定位问题。
内容的提问来源于stack exchange,提问作者FleetAdmiralJakob
相关产品推荐
相关产品推荐

