滚动到RecyclerView底部时加载更多数据,如何防止重复加载请求?

时间:2017-07-30 03:07:54

标签: android android-asynctask android-recyclerview

问题

当用户滚动到RecyclerView的底部时,我尝试加载更多数据。我找到了一个解决方案here,它可以检测到它并在到达recyclerView的底部时加载mre。 但是,通过记录任务信息,我发现,当它到达底部时,负载更多的AsyncTask将执行两次或更多。由于从API请求数据的限制率,我真的希望AsyncTask只执行一次。 addOnScrollListener如下:

mRecyclerViewHome.addOnScrollListener(new OnScrollListener() {
            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);

                int visibleItemCount = layoutManager.getChildCount();
                int totalItemCount = layoutManager.getItemCount();
                int pastVisibleItems = layoutManager.findFirstVisibleItemPosition();
                PullPrevTask pullPrevTask = new PullPrevTask();

                if (pastVisibleItems + visibleItemCount >= totalItemCount) {

                    try {
                        pullPrevTask.execute();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }

mRecyclerViewHome.scrollBy(0, 100);

                    Log.i(TAG, "reached bottom + pull task called");
                }
            }
        });

logcat logcat

我试过了: if语句中的recyclerView.scrollTo()。但是,recyclerView不会滚动。

问题:

如何防止它在这里创建deplicate AsynTask实例?因为每次到达recyclerView的底部时,都需要刷新,我不能使AsynTask成为成员变量。

0 个答案:

没有答案