我们如何才能检测到当前视图由于滚动而无法显示?

时间:2018-08-25 17:11:40

标签: android android-layout android-recyclerview android-drawable android-viewholder

为便于回收,请使用支架图案以提高效率。
当我们滚动一个回收商列表时,将创建或重复使用如图所示的项目。
我的问题是:如果某个项目滚动到可见性之外并且相应的视图不可见,是否有任何调用的方法可以表明这一点?例如。如果我们要在视图中下载资源,并且需要在用户滚动视图时取消下载,这是自动完成的,还是需要在ViewHolder上实现某种方法调用或其他方法?

1 个答案:

答案 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()来获取其适配器位置。