![](/img/trans.png)
[英]How can I get an event in Android Spinner when the current selected item is selected again?
[英]How can I discriminate the selected item of a Spinner by its text when using multilanguage items in Android?
我試圖通過其(多語言)文本來區分 Spinner 的選定項目。
這是我的默認字符串。xml 內容:
<string-array name="spinner_items">
<item>length</item>
<item>weight</item>
<item>temperature</item>
</string-array>
而這是另一個strings.xml(意大利語)內容:
<string-array name="spinner_items">
<item>lunghezza</item>
<item>peso</item>
<item>temperatura</item>
</string-array>
我以這種方式設置我的 Spinner 項目:
val items = resources.getStringArray(R.array.spinner_items)
spinner.adapter = ArrayAdapter(requireContext(), android.R.layout.simple_spinner_item, items)
然后我添加項目選擇的偵聽器:
spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) {
when(spinner.getItemAtPosition(position).toString()) {
"length" -> actionLength()
"lunghezza" -> actionLength()
"weight" -> actionWeight()
"peso" -> actionWeight()
"temperature" -> actionTemperature()
"temperatura" -> actionTemperature()
}
}
override fun onNothingSelected(parent: AdapterView<*>) {}
}
一切正常,但問題是每次我添加新的語言區域時,我必須記住在 when 塊中添加特定的字符串翻譯。 有沒有更“動態”的方式來做到這一點?
我過去遇到過同樣的問題,這就是我解決它的方法。 通過為數組中的每個項目添加字符串資源名稱來編輯您的 strings.xml 文件,例如:
默認字符串。xml
<string name="length">length</string>
<string name="weight">weight</string>
<string name="temperature">temperature</string>
<string-array name="spinner_items">
<item>@string/length</item>
<item>@string/weight</item>
<item>@string/temperature</item>
</string-array>
意大利語字符串。xml
<string name="length">lunghezza</string>
<string name="weight">peso</string>
<string name="temperature">temperatura</string>
<string-array name="spinner_items">
<item>@string/length</item>
<item>@string/weight</item>
<item>@string/temperature</item>
</string-array>
因此,在您的代碼中,您將擁有:
when(spinner.getItemAtPosition(position).toString()) {
getString(R.string.length) -> actionLength()
getString(R.string.weight) -> actionWeight()
getString(R.string.temperature) -> actionTemperature()
}
我希望我有幫助!
只需使用position
:
spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) {
when(position) {
0 -> actionLength()
1 -> actionWeight()
2 -> actionTemperature()
}
}
override fun onNothingSelected(parent: AdapterView<*>) {}
}
在您的數組中使用:
<string-array name="spinner_items">
<item>@string/length</item>
<item>@string/weight</item>
<item>@string/temperature</item>
</string-array>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.