赞
踩
转载 :https://blog.csdn.net/z979451341/article/details/79099201
平常我们使用RecyclerView的findViewHolderForAdapterPosition(int position)获取ViewHolder,使用LayoutManager的findViewByPosition(int position)获取itemView,通过这些函数之所以可能获取为空,因为这个position参数对应的item不可见,就算之前滑动显示过,如果调用函数的时候这个item不可见,那获取的值就是为空。
还有其他RecyclerView、LayoutManager获取某个item的VIewHolder、View的函数都是有这个特性。接下来我通过实例来证明,完整代码最后贴出
我给Item设置点击事件,点击对应的Item,会把item的背景颜色设置为红色。这个时候你不管怎么点程序运行正常,不会报空指针错误
如果我们在这个点击事件里,设置为把最后一个item的背景颜色设置为红色,还有就是我们看不到最后一个item,一点就崩溃,就算我们滑到最底部,然后滑到最上面,再点击还是会崩溃。
所以不是缓不缓存view,而是这个item可不可见
如果我们使用的LayoutManager是LInearLayoutManager,我们可以通过函数知道第一个可见的item和最后一个可见的item
点击item,获取这个item的view,设置背景颜色
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。