如何在 Android Studio (kotlin) 的同一个 activity 中管理 2 个下拉菜单

how to manage 2 dropdowns in the same activity in Android Studio (kotlin)

我有一个使用 2 个下拉菜单的项目。 第一个是建筑物 第二个是建筑物内的公寓号。 因此,当我们 select 建筑物和公寓号码时,我们得到所有者姓名。

我在 strings.xml

中创建了列表
<!--    LIST buildings-->
<string-array name="list_buildings">
    <item>Building 1</item>
    <item>Building 3</item>
    <item>Building 3</item>
</string-array>

<!--    LIST Houses-->
<string-array name="list_houses">
    <item>House 1</item>
    <item>House 2</item>
    <item>House 3</item>
</string-array>

我在 MainActivity.kt

中尝试过
// buildings
    // list in strings.xml
    val buildings = resources.getStringArray(R.array.list_buidings)
    val buldingAdapter = ArrayAdapter(
        this,
        R.layout.dropdown_buildings, 
        buildings
    )  

    // Houses

    val houses = resources.getStringArray(R.array.list_houses)

    val houseAdapter = ArrayAdapter(
        this,
        R.layout.dropdown_llamadas,
        houses
    )

       
        // ▼ id from AutoCompleteTextViews 
          // in activity_main.xml

    with(binding.chooseBuilding) {
        setAdapter(arrayAdapter)

        onItemClickListener = this@MainActivity
    }

    /
    with(binding.chooseHouse) {
        setAdapter(houseAdapter)
        // LISTENERS
        onItemClickListener = this@MainActivity

    }
}

override fun onItemClick(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {

    val item = parent?.getItemAtPosition(position).toString()

// this is to test if dropdowns are working. OK
// the problem is I can´t separate both dropdowns 

Toast.makeText(this@MainActivity, item, Toast.LENGTH_SHORT).show()

 // I get error trying to change the "item" element to customize the logic. 


if ( (item == "Building 1") || (item == "House 2" )  && (binding.chooseBuilding.isSelected)) {

binding.myTextView.text = "Katerine lives here..."

}

感谢您的帮助

首先,如果您使用的是 Spinner,那么您应该使用 onItemSelectedListener 而不是 onItemClickListener

onItemSelectedListener = this@MainActivity

其次,您可以简单地通过使用覆盖函数中的 parent 变量来分隔两个下拉菜单,如下所示:

override fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) {

     var building = ""
     var houses = ""

     if (parent == binding.chooseBuilding) {
            building = parent.getItemAtPosition(position).toString()
     } else if (parent == binding.chooseHouse) {
            houses = parent.getItemAtPosition(position).toString()
     }

     if ((building == "Building 1") || (houses == "House 2") && (binding.chooseBuilding.isSelected)) {
            Log.d("TAG", "Katerine lives here...")
     }
}