Я пытаюсь написать класс адаптера RecyclerView в Kotlin для Android.Я пытаюсь использовать традиционный способ создания настраиваемого класса средства просмотра для пользовательских объектов и использую в этом прослушиватель щелчков.В то время как я могу делать остальные вещи, такие как доступ к переменным внутреннего класса и показывать RecyclerView, я не смог сделать это, добавив прослушиватель click к объектам var внутреннего класса.
, то есть что-токак
var convertView : View? = itemView
convertView.setOnClickListener(this)
Ниже приведен мой полный код класса адаптера
public open class TestAdapter(val items: MutableList<Any>, val context: Activity) : RecyclerView.Adapter<TestAdapter.CustomViewHolder>() {
public var mItem: MutableList<Any> = items
public var mActivity: Activity = context
protected var clickListener: ExampleInterface? = null
public interface ExampleInterface {
fun click(pos: Int) {
}
}
open public fun setListener(mInterFaceListener: ExampleInterface) {
clickListener = mInterFaceListener
}
override fun onCreateViewHolder(p0: ViewGroup, p1: Int): CustomViewHolder {
var parentLayout: View = LayoutInflater.from(mActivity).inflate(R.layout.custom_view, p0, false)
return CustomViewHolder(parentLayout)
// return CustomViewHolder(LayoutInflater.from(mActivity).inflate(R.layout.custom_view, p0, false))
}
override fun getItemCount(): Int {
return mItem.size
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
override fun onBindViewHolder(p0: CustomViewHolder, p1: Int) {
p0.dataView.text = mItem.get(p1).toString()
}
inner class CustomViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), View.OnClickListener {
var convertView: View? = itemView
var dataView: TextView = convertView!!.findViewById(R.id.data)
var mposition = adapterPosition
override fun onClick(p0: View?) {
if (clickListener != null) {
clickListener!!.click(mposition)
}
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
}
}
Так что, если вы видите эти две строки в классе CustomView
var convertView: View? = itemView
var dataView: TextView = convertView!!.findViewById(R.id.data)
Я не могу получить доступ к этим переменным "convertView" и "dataView", чтобы я мог установить для них clicklistener.Так как этого добиться?Спасибо:)