如何从 Kotlin 中的 MultiSelectSpinner 获取逗号分隔的项目 ID
How to get comma separated item IDs from MultiSelectSpinner in Kotlin
我在我的 Kotlin 项目中使用 Github 中的这个 MultiSelectSpinner 控件。我不知道如何从此控件中获取所选项目的 Id
,我需要将所有所选项目的逗号分隔 ID 字符串设置为 tv_engineer_ids
TextView 控件。
布局代码:
<TextView
android:id="@+id/tv_engineer_ids"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<io.apptik.widget.multiselectspinner.MultiSelectSpinner
android:id="@+id/spin_engineer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="15dp"
/>
科特林代码:
val engineers: ArrayList<String> = ArrayList<String>();
addJobResponse.engineerList!!.forEach {
engineers.add(it.name!!);
}
spin_engineer.setItems(engineers)
.setListener<BaseMultiSelectSpinner>(object: BaseMultiSelectSpinner.MultiSpinnerListener {
override fun onItemsSelected(selected:BooleanArray) {
//Toast.makeText(context, selected.toString(), Toast.LENGTH_LONG).show()
// Need to set comma separated IDs here
selected.forEach {
Toast.makeText(context, it.toString(), Toast.LENGTH_LONG).show()
}
}
})
engineerList
是 Engineer
数据的列表 class.
EngrList 数据Class代码:
data class Engineer (
@SerializedName("Id")
@Expose
var id: Long? = null,
@SerializedName("Name")
@Expose
var name: String? = null)
首先,您可以使用 map
:
,而不是一开始就使用 forEach
并向新的 ArrayList
一个接一个地添加工程师
val engineers: List<String> = engineerList.map { it.name!! }
然后,在侦听器中,您可以使用 filterIndexed
获取索引上的 Engineer
列表,其中 selected
数组包含 true
:
val selectedEngineers: List<Engineer> = engineerList
.filterIndexed { index, engineer -> selected[index] }
最后,对于逗号分隔列表,joinToString
:
println(selectedEngineers.joinToString { it.id!!.toString() })
我在我的 Kotlin 项目中使用 Github 中的这个 MultiSelectSpinner 控件。我不知道如何从此控件中获取所选项目的 Id
,我需要将所有所选项目的逗号分隔 ID 字符串设置为 tv_engineer_ids
TextView 控件。
布局代码:
<TextView
android:id="@+id/tv_engineer_ids"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<io.apptik.widget.multiselectspinner.MultiSelectSpinner
android:id="@+id/spin_engineer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="15dp"
/>
科特林代码:
val engineers: ArrayList<String> = ArrayList<String>();
addJobResponse.engineerList!!.forEach {
engineers.add(it.name!!);
}
spin_engineer.setItems(engineers)
.setListener<BaseMultiSelectSpinner>(object: BaseMultiSelectSpinner.MultiSpinnerListener {
override fun onItemsSelected(selected:BooleanArray) {
//Toast.makeText(context, selected.toString(), Toast.LENGTH_LONG).show()
// Need to set comma separated IDs here
selected.forEach {
Toast.makeText(context, it.toString(), Toast.LENGTH_LONG).show()
}
}
})
engineerList
是 Engineer
数据的列表 class.
EngrList 数据Class代码:
data class Engineer (
@SerializedName("Id")
@Expose
var id: Long? = null,
@SerializedName("Name")
@Expose
var name: String? = null)
首先,您可以使用 map
:
forEach
并向新的 ArrayList
一个接一个地添加工程师
val engineers: List<String> = engineerList.map { it.name!! }
然后,在侦听器中,您可以使用 filterIndexed
获取索引上的 Engineer
列表,其中 selected
数组包含 true
:
val selectedEngineers: List<Engineer> = engineerList
.filterIndexed { index, engineer -> selected[index] }
最后,对于逗号分隔列表,joinToString
:
println(selectedEngineers.joinToString { it.id!!.toString() })