lah*_*rah 5 android android-recyclerview
我有一个包含大量收藏品的RecyclerView,比如500多个项目.当onBindViewHolder叫我做一个异步HTTP请求加载一些数据.
但是当我在列表中快速滚动时,如何取消对不再可见的所有项目的请求?我看到100个请求在后台启动,因为RecyclerView加载的方式,我认为onBindViewHolder是为我滚动的每个项目调用的?
我想在onBindViewHolder等待500ms的时候启动一个请求,如果绑定到它的项目仍然在视图中/仍然相同,则启动异步请求.这会有用吗?如果是这样,那么我如何检查该项目是否仍然在适配器内?
解决这个问题的正确方法是什么?
你可以OnScrollListener为RecyclerView:
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)