它告诉我存在不匹配,它需要“AdapterView<*>!但它找到了“Int”我该怎么解决这个问题?
class InstructorViewHolder(itemView: View, listener: OnItemClickListener) : RecyclerView.ViewHolder(itemView){
val firstName: TextView = itemView.findViewById(R.id.tvInstructorName)
val phoneNumber: TextView = itemView.findViewById(R.id.tvInstructorNumber)
val age: TextView = itemView.findViewById(R.id.tvInstructorAge)
init {
itemView.setOnClickListener {
listener.onItemClick(absoluteAdapterPosition)
}
}
}
我尝试使用“bindingAdapterPosition”,但仍然得到相同的错误。在这个文档中,它指出返回类型应该是Int,这就是为什么我感到困惑,为什么它要求我提供“AdapterView<*>”。
我看了这个link,但是,它并没有确切地解释如何实现该功能。
1条答案
按热度按时间bnlyeluc1#
你调用
listener.onItemClick
,从这个非常模糊的截图看起来listener
就是AdapterView.OnItemClickListener
。the docs:所以问题不在于
absoluteAdapterPosition
--这是提供一个Int
刚刚好!但是错误是 * 抱怨你传递的是一个Int
*,因为它实际上 * 期望 * 是一个AdapterView<*>
。这就是它 * 需要 * 的,但它 * 发现 * 是你提供的Int
,对吧?所以你可以通过它使用的语言来判断问题的来源。(由于该方法还有一些其他参数,如果修复了这个参数,它会抱怨丢失了这些参数)通过你尝试做的事情(用一个
Int
参数调用onItemClick
),我猜你导入了错误的OnItemClickListener
--如果你尝试使用一个东西,但它看起来完全错误,那通常会发生这种情况!