如何在选中下拉选项时更新link_video变量?现有代码异常
问题修复方案
核心问题分析
- 下拉菜单多空选项:初始化
episode_number时添加了空字符串,且循环0..total_episode为闭区间(包含total_episode),导致多余循环一次 - link_video不更新:使用
String.replace()不会修改原变量(Kotlin字符串不可变),且选项匹配逻辑错误(拿选项文本和数组的toString结果对比,永远不相等) - 冗余代码:
number数组完全没必要,直接利用选项的position即可对应episode_link的索引
修复后的完整代码
var link_video = "video" private fun dropdown() { val total_episode = 2 val episode_number = arrayListOf<String>() // 初始化空列表,移除多余空字符串 val episode_link = arrayListOf( "http://download2263.mediafire.com/okgtas0jidsg/txs1m4i2pjv01ay/hasil.mp4", "https://www269.ff-01.com/token=yv8LUf_fCoY-MMB_ZIUbfA/1661176164/182.1.0.0/7/5/6b/159f0f122232ece4ff931ed7ba0696b5-480p.mp4" ) // 用左闭右开循环生成恰好total_episode个选项 for (item in 0 until total_episode) { episode_number.add("Episode ${item + 1}") } val arrayAdapter = ArrayAdapter(this, R.layout.item_form_dropdown, episode_number) val episodebox_input = findViewById<AutoCompleteTextView>(R.id.episodebox_input) episodebox_input.setAdapter(arrayAdapter) episodebox_input.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { override fun onNothingSelected(parent: AdapterView<*>?) {} override fun onItemSelected( parent: AdapterView<*>?, view: View?, position: Int, id: Long ) { // 直接通过position索引匹配对应链接,选项顺序与链接顺序完全对应 link_video = episode_link[position] } } }
关键修改说明
- 移除空初始选项:
episode_number初始化为空列表,避免下拉菜单出现多余空项 - 优化循环范围:用
0 until total_episode替代0..total_episode,确保生成恰好total_episode个选项 - 简化链接匹配逻辑:直接通过
position索引获取对应链接,不需要额外维护索引数组 - 正确更新link_video:直接赋值
link_video = episode_link[position],替换原错误的replace调用 - 移除冗余变量:删除不必要的
number数组,精简代码
额外提示
如果需要默认选中第一个剧集并初始化链接,可以在设置适配器后添加:
episodebox_input.setText(episode_number[0], false) link_video = episode_link[0]
内容的提问来源于stack exchange,提问作者zawkey
相关产品推荐
相关产品推荐

