【问题标题】:Android Kotlin pass spinner values to mutable listAndroid Kotlin 将微调器值传递给可变列表
【发布时间】:2017-09-27 14:34:29
【问题描述】:

我有一个包含多个项目的微调器应用程序。 我创造了它和所有这些

谁能给我一个示例,说明如何将这些值传递给我拥有的列表?使用可变列表?

干杯

class NewKitListActivity : AppCompatActivity() {

var spinnerArray = arrayOf("Dumbell", "Punching Bag", "Yoga Ball", "Skipping Rope")

 val kitMutableList = mutableListOf(spinnerArray)





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



    val spinner = newKitItemSpinner
    val spinnerArrayAdapter = ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item, spinnerArray)
    //selected item will look like a spinner set from XML
    spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
    spinner.adapter = spinnerArrayAdapter

    spinner.onItemSelectedListener = object : OnItemSelectedListener {
        override fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) {
            val selectedItem = parent.getItemAtPosition(position).toString()
            if (selectedItem == "Dumbell") {

               // mutableListAdapter.toMutableList()
                //mutableList.adapter = mutableListAdapter


            }
        } // to close the onItemSelected

        override fun onNothingSelected(parent: AdapterView<*>) {

        }
    }

【问题讨论】:

  • 发布您的代码;告诉我们您尝试了哪些方法,哪些方法无效。
  • 我不确定这是否是您创建 mutableList val 的方式。看看我有的两个评论,它们是正确的吗?

标签: android kotlin spinner


【解决方案1】:

我相信你可以这样做。 1.制作自定义适配器或适配器 2. 制作第一个包含字符串值的列表 3.制作包含选定值的可变列表 4. 当微调器第一次加载时,它从第一个适配器和列表中加载值 5.当用户选择项目时,它首先清除适配器,然后通知更改,然后从可变列表中设置新的适配器加载值(我不确定最后是否需要通知适配器的更改)

//Mutable List for storing selected items

val selectedItems: MutableList<String>? = null 

 //Listen On select for spinner

        spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {

            //Performing action onItemSelected and onNothing selected
            override fun onItemSelected(arg0: AdapterView<*>, arg1: View, position: Int, id: Long) {

               // Add selected item in Mutable List
               selectedItems.add(spinnerArray[position])

               // Clear Adapter
                spinner.adapter = null
                // Notify data set changed
                spinnerArrayAdapter.notifyDataSetChanged()
               // Set New Data adapter
               spinner.adapter = ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item, selectedItems)


            }

            override fun onNothingSelected(arg0: AdapterView<*>) {
                // TODO: Auto-generated method stub


            }

        }

【讨论】:

  • 为什么不实例化 selectedItems 列表?
【解决方案2】:

创建一个列表来存储您选择的项目:

val selectedItems = mutableListOf<String>()

然后在项目被选中时添加:

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

           selectedItems.add(spinnerArray[position])

   }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多