我有 20 个子视图recyclerView
,启动时只有 5 个可见。如果我尝试访问屏幕外的子视图持有者,null
则会返回。如何解决这个问题?
RecyclerView.ViewHolder holder = recyclerView.findViewHolderForAdapterPosition(i);
holder
是null
。
我有 20 个子视图recyclerView
,启动时只有 5 个可见。如果我尝试访问屏幕外的子视图持有者,null
则会返回。如何解决这个问题?
RecyclerView.ViewHolder holder = recyclerView.findViewHolderForAdapterPosition(i);
holder
是null
。
它应该为空,请参阅文档
回收(视图):以前用于显示特定适配器位置的数据的视图可能会被放置在缓存中,以供以后重用,以便以后再次显示相同类型的数据。这可以通过跳过初始布局膨胀或构造来显着提高性能。
因此,您可以看到,不会生成不在屏幕上的视图,因此方法recyclerView.findViewHolderForAdapterPosition(i); 将返回空值。
如果你真的需要访问屏幕外的项目,你可以试试我的这个代码:
for(int i = 0; i<Objects.requireNonNull(recyclerView.getAdapter()).getItemCount(); i++) {
if (recyclerView.findViewHolderForLayoutPosition(i) != null) {
View childView = Objects.requireNonNull(recyclerView.findViewHolderForLayoutPosition(i)).itemView;
ImageView childCheckThumb = childView.findViewById(R.id.thumb_check);
TextView namePlateView = childView.findViewById(R.id.name_plate_text_view);
childCheckThumb.setVisibility(thumb);
}
}
就我而言,我正在访问以检查所有屏幕外列表,希望这可以解决您的问题