Kotlin - 从函数中提取值

Kotlin - Extract value from function

我正在处理 Kotlin 代码,我需要使用在函数内部创建的值。我分享我的代码:

        val Myspinner: Spinner = findViewById(R.id.spinner)
        if (Myspinner!= null) {
            val adapter = ArrayAdapter(this,
                android.R.layout.simple_spinner_item, pulsatil)
            Myspinner.adapter = adapter
        }

        Myspinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener{
            //val pulsatil2 = Myspinner.selectedItem.toString()
            override fun onNothingSelected(parent: AdapterView<*>?) {TODO("not implemented")}
            override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
                val Spinnervalue: String = parent?.getItemAtPosition(position).toString()
            }
        }

val MyArrayList: MutableList<Spinnervalue> = ArrayList()

然后我想将“Spinnervalue”添加到“MyArrayList”。我试图像 class 的全局值一样创建“Myfinalvalue”,但它不起作用。

有什么想法吗?

提前致谢!

第一个问题是您需要能够在 class 中的任何位置访问您的数组,因此“MyArrayList”必须是全局的。 二、这里:

val MyArrayList: MutableList<Spinnervalue> = ArrayList()

您已将“Spinnervalue”作为数组列表的类型传递,而您要添加到数组列表的值类型实际上是一个字符串。所以你在 activity 中的最终代码应该是这样的:

class MainActivity : AppCompatActivity() {

val myArrayList = arrayListOf<String>()

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)


    val Myspinner: Spinner = findViewById(R.id.spinner)
    if (Myspinner!= null) {
        val adapter = ArrayAdapter(this,
                android.R.layout.simple_spinner_item, pulsatil)
        Myspinner.adapter = adapter
    }

    Myspinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener{
        //val pulsatil2 = Myspinner.selectedItem.toString()
        override fun onNothingSelected(parent: AdapterView<*>?) {TODO("not implemented")}
        override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
            val Spinnervalue: String = parent?.getItemAtPosition(position).toString()
            myArrayList.add(Spinnervalue)
        }
    }
}

将您的数组列表置于顶部,然后将您的值添加到 onItemSelected 函数中,就像我发布的代码一样。