RecyclerView和背景请求与大量项目

lah*_*rah 5 android android-recyclerview

我有一个包含大量收藏品的RecyclerView,比如500多个项目.当onBindViewHolder叫我做一个异步HTTP请求加载一些数据.

但是当我在列表中快速滚动时,如何取消对不再可见的所有项目的请求?我看到100个请求在后台启动,因为RecyclerView加载的方式,我认为onBindViewHolder是为我滚动的每个项目调用的?

我想在onBindViewHolder等待500ms的时候启动一个请求,如果绑定到它的项目仍然在视图中/仍然相同,则启动异步请求.这会有用吗?如果是这样,那么我如何检查该项目是否仍然在适配器内?

解决这个问题的正确方法是什么?

pho*_*van 6

你可以OnScrollListenerRecyclerView:

 public void onScrollStateChanged(AbsListView view, int scrollState) {
    if (scrollState == SCROLL_STATE_IDLE){
        int firstVisibleItem = view.getFirstVisiblePosition();
        int lastVisiblePosition = view.getLastVisiblePosition();

        //call request from firstVisibleItem to lastVisiblePosition 

    }
}
Run Code Online (Sandbox Code Playgroud)