Android 如何检测当前视图由于滚动而不可见?

Android 如何检测当前视图由于滚动而不可见?,android,android-layout,android-recyclerview,android-drawable,android-viewholder,Android,Android Layout,Android Recyclerview,Android Drawable,Android Viewholder,对于回收者视图,支架模式用于提高效率。 当我们滚动回收者列表时,视图中显示的项目被创建或重新使用。 我的问题是:如果某个项目被滚动到不可见状态,而相应的视图不可见,是否有任何方法被调用来指示这一点?例如,如果我们在视图中下载资源,并且需要在用户滚动视图时取消下载,那么这是自动完成的,还是需要在ViewHolder上执行某些方法调用或其他操作?您可以覆盖此RecyclerView方法来检查项目何时被回收 @Override public void onViewRecycled(R

对于回收者视图,支架模式用于提高效率。
当我们滚动回收者列表时,视图中显示的项目被创建或重新使用。

我的问题是:如果某个项目被滚动到不可见状态,而相应的视图不可见,是否有任何方法被调用来指示这一点?例如,如果我们在视图中下载资源,并且需要在用户滚动视图时取消下载,那么这是自动完成的,还是需要在ViewHolder上执行某些方法调用或其他操作?

您可以覆盖此
RecyclerView
方法来检查项目何时被回收

    @Override 
    public void onViewRecycled(RecyclerView.ViewHolder holder) {
        super.onViewRecycled(holder);
        // check if download is in progress and stop it.
    }
在此适配器创建的视图被回收时调用

    @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()获取其适配器位置


还有一个
onviewsattached(ViewHolder)
方法,它在ViewHolder离开视口时被调用,但这并不意味着它将被回收,因此它不是中断异步任务的好地方。