Kotlin-从函数中提取值

问题描述

我正在研究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”。我试图像类的全局值一样创建“ Myfinalvalue”,但是它不起作用。

有什么想法吗?

谢谢!

解决方法

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

val MyArrayList: MutableList<Spinnervalue> = ArrayList()

您已将“ Spinnervalue”作为数组列表的类型,而要添加到数组列表的值的类型实际上是一个字符串。因此您在活动中的最终代码应如下所示:

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)
        }
    }
}

将您的arraylist放在顶部,然后将值添加到onItemSelected函数中,就像我发布的代码一样。