在自定义的
我没有在编译时收到任何警告或错误,但在运行时,我收到了一个RuntimeException,说
关于Kotlin解决方案的进一步说明:
我曾尝试过使用
RecyclerView.Adapter<CustomAdapter.ViewHolder>
中,我为一个下拉框设置了适配器,但是发现在选择后下拉框的值没有变化,因此我尝试给下拉框添加OnItemClickListener
:override fun onBindViewHolder(viewHolder: ViewHolder, position: Int) {
// The selectable items of the spinner is dynamically generated from getItems() function
val selectableItems: List<String> = getItems()
val spinnerAdapter = ArrayAdapter<String>(this.context, androi.R.layout.simple_spinner_item)
spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
spinnerAdapter.addAll(selectableItems)
viewHolder.mySpinner.adapter = spinnerAdapter
// the error occurs on the following line:
viewHolder.mySpinner.onItemClickListener = AdapterView.OnItemClickListener { adapterView, view, i, l ->
adapterView.setSelection(i)
}
viewHolder.mySpinner.setSelection(origionSelectedPosition)
}
我没有在编译时收到任何警告或错误,但在运行时,我收到了一个RuntimeException,说
setOnItemClickListener不能与spinner一起使用
。这有点奇怪。我的代码有问题吗?还是有人知道为什么我的spinner没有根据相应的选择更改?关于Kotlin解决方案的进一步说明:
我曾尝试过使用
onItemSelectedListener
,但未能找到在kotlin中使用它的合适方法。
但最终!以下代码解决了我的问题: viewHolder.mySpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onItemSelected(parent: AdapterView<*>, view: View, pos: Int, id: Long) {
}
override fun onNothingSelected(parent: AdapterView<out Adapter>?) {
}
}
spinner.onItemSelectedListener
。 - Bharatesh