为便于回收,请使用支架图案以提高效率。
当我们滚动一个回收商列表时,将创建或重复使用如图所示的项目。
我的问题是:如果某个项目滚动到可见性之外并且相应的视图不可见,是否有任何调用的方法可以表明这一点?例如。如果我们要在视图中下载资源,并且需要在用户滚动视图时取消下载,这是自动完成的,还是需要在ViewHolder上实现某种方法调用或其他方法?
答案 0 :(得分:1)
您可以覆盖此RecyclerView
方法,以检查何时回收物品。
@Override
public void onViewRecycled(RecyclerView.ViewHolder holder) {
super.onViewRecycled(holder);
// check if download is in progress and stop it.
}
由该适配器创建的视图被回收后调用。
当RecyclerView.LayoutManager决定视图被回收时,该视图将被回收 不再需要附加到其父级RecyclerView。这可以是 因为它已失去可见性或一组缓存的视图 由仍附加到父级RecyclerView的视图表示。如果 项目视图具有绑定到的大型或昂贵数据,例如大型 位图,这可能是释放这些资源的好地方。
RecyclerView在清除ViewHolder的之前立即调用此方法 内部数据并将其发送到RecycledViewPool。这样,如果 ViewHolder在回收之前保存了有效信息,您 可以调用getAdapterPosition()来获取其适配器位置。