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 函数中,就像我发布的代码一样。
我正在处理 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 函数中,就像我发布的代码一样。