Android RecyclerView FindViewHolder for LayoutPosition和FindViewHolder for AdapterPosition返回null

Android RecyclerView FindViewHolder for LayoutPosition和FindViewHolder for AdapterPosition返回null,android,android-recyclerview,android-viewholder,Android,Android Recyclerview,Android Viewholder,我只是想让我的视图持有者出现在屏幕上,但是findViewHolderFor*方法几乎总是被赋予null对象 我的适配器中的代码: fun getVisibleViewHolder(recyclerView: RecyclerView) { for (i in 0 until recyclerView.childCount) { val viewHolder = recyclerView.findViewHolderForLayoutPosition(i) // null

我只是想让我的视图持有者出现在屏幕上,但是findViewHolderFor*方法几乎总是被赋予null对象

我的适配器中的代码:

fun getVisibleViewHolder(recyclerView: RecyclerView) {
    for (i in 0 until recyclerView.childCount) {
        val viewHolder = recyclerView.findViewHolderForLayoutPosition(i) // null: most of the time (specially when scroll performed)
        val viewHolder = recyclerView.findViewHolderForAdapterPosition(i) // idem
    }
}

有时它是有效的,但很少见。

所以我找到了解决方案!还有解释。 recyclerView.childCount=父元素中与位置明显不同的元素数

    for (i in 0 until recyclerView.childCount) {
        val view = recyclerView.getChildAt(i)
        val viewHolder = recyclerView.findContainingViewHolder(view)
        ... // the purpose, getting the data from the user here
    }

当项目离开屏幕时,RecyclerView立即回收视图。因此,如果我们为屏幕外的视图调用FindViewWholderForAdapterPosition(),我们会得到一个空值。是的,这部分没有问题,我尝试获取的视图都在屏幕上。(就像我说的:我只是想在屏幕上看到我的视图持有者)你什么时候打这个电话
getVisibleViewHolder
也共享该代码。当我单击按钮时,在按下前