****我有一个android项目,当我在android活动中添加微调器时,它可以工作,但是当我添加列表视图以显示每个国家/地区的城市时,它不起作用我需要帮助,我想在单击微调国家项目时分别显示以下相同国家/地区城市的列表视图这是科特林代码:**
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
) {
}
}
}
}
好,很简单,只需将列表代码放在某个方法中,然后从微调器的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()
}
}
希望这会有所帮助。