是否有可能在带有旋转器的相同android活动中添加列表视图

问题描述 投票:0回答:1

****我有一个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
            ) {

            }
        }

    }

}
android kotlin android-listview spinner
1个回答
0
投票

好,很简单,只需将列表代码放在某个方法中,然后从微调器的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()
        }
    }

希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.