【发布时间】:2019-10-18 12:28:44
【问题描述】:
我只是想让我的视图持有者在屏幕上看到,但方法 findViewHolderFor* 几乎总是被赋予空对象。
我的适配器中的代码:
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 在项目离开屏幕后立即回收视图。因此,如果我们为屏幕外的视图调用 findViewHolderForAdapterPosition(),我们会得到一个空值。
-
是的,这部分没有问题,我试图获得的视图在屏幕上。 (就像我说的:我只是想让我的视图持有者在屏幕上看到)
-
你什么时候打电话?
getVisibleViewHolder也分享该代码。 -
当我点击一个按钮时,在 onBackPressed 之前
标签: android android-recyclerview android-viewholder