飞旋在定制RecyclerView.Adapter<CustomAdapter.ViewHolder>
,我设置的适配器的微调,发现我的飞旋的价值选择之后没有改变,所以我想在我的微调添加OnItemClickListener
:无法设置OnItemClickListener请在Android
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 cannot be used with a spinner
。这有点奇怪。我在代码中做错了什么?还是有人知道为什么我的微调没有改变相应的选择?
的科特林解决方案的进一步说明:
我曾经试图用onItemSelectedListener
但未能找到在科特林使用它一个合适的方式。 但终于!下面的代码解决了我的问题:
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
可能的复制[我有一个错误:setOnItemClickListener不能使用旋转器一起使用,什么是错误?](http://stackoverflow.com/questions/11322642/i-have-an-error-setonitemclicklistener-cannot-be-used-with-a-spinner-what-is-w) – miensol
检查此解决方案:http://stackoverflow.com/a/11322667/3819836 –