有人能告诉我为什么当我尝试在Kotlin的回收器视图中使用“absoluteAdapterPosition”时会出现错误吗?

vsaztqbk  于 2023-05-18  发布在  Kotlin
关注(0)|答案(1)|浏览(254)

它告诉我存在不匹配,它需要“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,但是,它并没有确切地解释如何实现该功能。

bnlyeluc

bnlyeluc1#

你调用listener.onItemClick,从这个非常模糊的截图看起来listener就是AdapterView.OnItemClickListenerthe docs

public abstract void onItemClick (AdapterView<?> parent, 
                View view, 
                int position, 
                long id)

所以问题不在于absoluteAdapterPosition--这是提供一个Int刚刚好!但是错误是 * 抱怨你传递的是一个Int *,因为它实际上 * 期望 * 是一个AdapterView<*>。这就是它 * 需要 * 的,但它 * 发现 * 是你提供的Int,对吧?所以你可以通过它使用的语言来判断问题的来源。(由于该方法还有一些其他参数,如果修复了这个参数,它会抱怨丢失了这些参数)
通过你尝试做的事情(用一个Int参数调用onItemClick),我猜你导入了错误的OnItemClickListener--如果你尝试使用一个东西,但它看起来完全错误,那通常会发生这种情况!

相关问题