以编程方式更改 Spinner 文本内容
Change Spinner Text content programmatically
我有一个微调器,我想找到一种方法来更改我的微调器的下拉菜单。我想通过代码更改我的文本内容,但我不知道该怎么做。
这是我的 Spinner 的结构:
val adapter: ArrayAdapter<String> = ArrayAdapter<String>(
context,
android.R.layout.simple_spinner_item, units1[i]
)
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
val new_spin = Spinner(context)
new_spin.setAdapter(adapter)
我想将微调器中的文本更改为不同的列表 (unit2)。
如果您想更改适配器显示的列表,您可以使用 clear
和 addAll
来更改数据。
对于这种情况,您需要确保不要将列表传递给
适配器的构造函数,否则调用 clear
或 addAll
将尝试修改原始列表。如果原来
list 是不可变的 (listOf
) 它会抛出一个错误,如果它是可变的 (ArrayList
) 你可能会得到意想不到的行为
因为它会修改原始源列表。
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private val arr1 = listOf("1","2","3")
private val arr2 = listOf("a","b","c")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
// If you pass an array in here, calling things like "clear"
// or "addAll" will modify the original list passed in. Passing in
// nothing means the adapter will hold its own unique list...
val adapter = ArrayAdapter<String>(this, R.layout.simple_spinner_item)
// ...and you can initialize the adapter's list using addAll
adapter.addAll(arr1)
binding.mySpinner.adapter = adapter
binding.changeSpinnerText.setOnClickListener {
// to change what is shown, clear the adapter's list
// and add the new values to show
adapter.clear() // remove the existing values
adapter.addAll(arr2) // add the new values
}
}
}
我有一个微调器,我想找到一种方法来更改我的微调器的下拉菜单。我想通过代码更改我的文本内容,但我不知道该怎么做。
这是我的 Spinner 的结构:
val adapter: ArrayAdapter<String> = ArrayAdapter<String>(
context,
android.R.layout.simple_spinner_item, units1[i]
)
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
val new_spin = Spinner(context)
new_spin.setAdapter(adapter)
我想将微调器中的文本更改为不同的列表 (unit2)。
如果您想更改适配器显示的列表,您可以使用 clear
和 addAll
来更改数据。
对于这种情况,您需要确保不要将列表传递给
适配器的构造函数,否则调用 clear
或 addAll
将尝试修改原始列表。如果原来
list 是不可变的 (listOf
) 它会抛出一个错误,如果它是可变的 (ArrayList
) 你可能会得到意想不到的行为
因为它会修改原始源列表。
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private val arr1 = listOf("1","2","3")
private val arr2 = listOf("a","b","c")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
// If you pass an array in here, calling things like "clear"
// or "addAll" will modify the original list passed in. Passing in
// nothing means the adapter will hold its own unique list...
val adapter = ArrayAdapter<String>(this, R.layout.simple_spinner_item)
// ...and you can initialize the adapter's list using addAll
adapter.addAll(arr1)
binding.mySpinner.adapter = adapter
binding.changeSpinnerText.setOnClickListener {
// to change what is shown, clear the adapter's list
// and add the new values to show
adapter.clear() // remove the existing values
adapter.addAll(arr2) // add the new values
}
}
}