android - 具有大量项目集合的 RecyclerView 和后台请求

标签 android android-recyclerview

我有一个 RecyclerView,上面绑定(bind)了一个大集合,比如 500 多个项目。当 onBindViewHolder 被调用时,我发出一个异步 HTTP 请求来加载一些数据。

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

我正在考虑在等待 500 毫秒的 onBindViewHolder 中启动一个请求,如果绑定(bind)到它的项目仍在 View 中/仍然相同,则启动异步请求。这行得通吗?如果是这样,那么我如何检查该项目是否仍在适配器中可见?

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

最佳答案

你可以为 RecyclerView 创建一个 OnScrollListener:

 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 

    }
}

关于android - 具有大量项目集合的 RecyclerView 和后台请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38341277/

相关文章:

Android获取系统语言环境的不同方法

android - 在 recyclerView 的行内处理按钮单击

android - android中的分段recyclerview标题和子项目

java - 使用 TextInputEditText 在 RecyclerView 中遇到问题

android - 录制时逐帧处理Android视频

android - Android 8以上版本Delphi无法启动Android Service

java - 如何从 Android 中的普通 Activity 启动 MapActivity

Android:在 Adapter 的 onBindViewHolder 中将 ImageView 动态添加到 Linearlayout

android - 需要帮助了解 Cardview 项目点击

android - RxJava : auto unsubscribe in Android MVP