是否可以使用微调器在相同的 android 活动中添加列表视图
Posted
技术标签:
【中文标题】是否可以使用微调器在相同的 android 活动中添加列表视图【英文标题】:Is it possible to add a listview in same android activity with a spinner 【发布时间】:2020-09-01 06:33:47 【问题描述】:我有一个 android 项目。当我在 android 活动中添加一个微调器时,它可以工作,但是当我添加一个列表视图以显示每个国家的城市时它不起作用。
我需要帮助。我希望当我点击微调器时,国家项目在下面单独显示相同国家城市的列表视图。
这里是 kotlin 代码:
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.AdapterView
import android.widget.ArrayAdapter
import android.widget.TextView
import kotlinx.android.synthetic.main.activity_second.*
class SecondActivity : AppCompatActivity()
var countryData = arrayOf("Algeria", "Palestine", "Jordan", "Iraq", "Syria")
lateinit var data: String
var algData = arrayOf("Algiers", "Oran", "Annaba")
var palData = arrayOf("Jerusalem", "Gaza", "Nablus")
var jorData = arrayOf("Amman", "Aqaba", "Zarqa")
var irqData = arrayOf("Baghdad", "Mosul", "Basra")
var syrData = arrayOf("Damascus", "Aleppo", "Lattakia")
lateinit var countryAd: ArrayAdapter<String>
lateinit var citiesAd: ArrayAdapter<String>
override fun onCreate(savedInstanceState: Bundle?)
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_second)
countryAd = ArrayAdapter(this, android.R.layout.simple_spinner_item, countryData)
spinner.adapter = countryAd
spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener
override fun onNothingSelected(parent: AdapterView<*>?)
override fun onItemSelected(
parent: AdapterView<*>?,
view: View?,
position: Int,
id: Long
)
val txt = view as TextView
if (txt ==Algeria)
data = algData
citiesAd = ArrayAdapter(this, android.R.layout.simple_list_item_1, data)
listview.adapter = citiesAd
listview.onItemClickListener = object : AdapterView.OnItemClickListener
override fun onItemClick(
parent: AdapterView<*>?,
view: View?,
position: Int,
id: Long
)
【问题讨论】:
【参考方案1】:好的,很简单,把你的list代码放在某个方法里面,然后从spinner的onItemSelectedListener中调用这个方法。
参考这个:
private fun setCityList()
citiesAd = ArrayAdapter(this, android.R.layout.simple_list_item_1, data)
listview.adapter = citiesAd
现在调用这个方法 onItemSelectedListener
spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener
override fun onNothingSelected(parent: AdapterView<*>?)
override fun onItemSelected(
parent: AdapterView<*>?,
view: View?,
position: Int,
id: Long
)
val txt = view as TextView
when(txt.text)
"Algeria" -> data = algData
"Palestine" -> data = palData
"Jordan" -> data = jorData
"Iraq" -> data = irqData
"Syria" -> data = syrData
//notice this
setCityList()
希望这会有所帮助。
【讨论】:
首先谢谢...但我仍然收到错误(以下函数都不能使用提供的参数调用),ArrayAdapter 上有红色下划线 你能用你在代码中所做的更改更新你的帖子吗?以上是关于是否可以使用微调器在相同的 android 活动中添加列表视图的主要内容,如果未能解决你的问题,请参考以下文章