适配器 Equivelant 中的 findViewHolderForAdapterPosition 是什么?

What is the findViewHolderForAdapterPosition inside an adapter Equivelant?

我有一个带有 16 种不同视图支架类型的自定义适配器。我想在调用方法时获取特定位置的视图持有者。

现在我可以使用

在适配器外部执行此操作
recyclerView.findViewHolderForAdapterPosition(0)

是否可以在适配器内部创建这种效果?

还要澄清一下,我的意思不是涉及 "onBindViewHolder" 的任何内容,因为我希望遍历我的项目列表并从我的适配器中的各种文本字段和单选按钮获取详细信息。

关于我的设计的额外编辑: 此功能的原因是最后一个视图持有者是一个 "submit" 按钮。单击时,它会调用一种方法来遍历各种适配器的文本字段和单选按钮以构建自定义对象。然后回调 activity。这里将带有迭代数据的对象上传到服务器

我不完全确定你的设计是什么,但 ViewHolders 应该只呈现数据而不包含任何值得迭代的有价值的信息。无论如何:

RecyclerView.Adapter 可以同时被多个 RecyclerView 使用,所以没有 1:1 关系。

如果您只将它用于一个人,您可以只保留对 recyclerView 的硬引用并对其调用 findViewHolderForAdapterPosition

// inside Adapter
private var currentRecyclerView : RecyclerView? = null

override fun onAttachedToRecyclerView(recyclerView : RecyclerView) {
    currentRecyclerView = recyclerView
}

override fun onDetachedFromRecyclerView(recyclerView : RecyclerView){
    currentRecyclerView = null
}

那你可以用currentRecyclerView?.findViewHolderForAdapterPosition(Int).