我如何才能创建无尽的两侧滚动recyclerView?

时间:2019-03-28 11:32:26

标签: android android-recyclerview

我看到了this个问题。这个问题的答案是可行的。但是...我必须创建向两侧滚动。这个答案帮助我达到了最低要求,但是当我到达列表顶部时,我不知道如何发送请求。我试图使用像这样的东西:

case when

并添加了此内容:

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
                if(dy > 0) //check for scroll down
                {

                }
            }
        });

但是它工作不正确。为什么?因为在到达列表底部之后加载了一些数据之后,我的列表会自动到达列表顶部并再次加载数据。因此,我必须再添加一个条件,但我无法想象哪个条件。也许有人可以帮我吗?

更新

我试图添加这样的东西:

if(dy == 0) 
{
           getting some data          
}

但是这种情况:

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
                if (dy > 0) //check for scroll down
                {
                  pastVisiblesItems = layoutManager.findFirstVisibleItemPosition();
                  if (loading) {
                      loading = false;
                   }
                }

                if(pastVisiblesItems==5){
                    loading=true;
                }

                if (loading&&recyclerView.canScrollVertically(-1)){
                    if (prev_url != null) {

                        Log.i("m","[]");
                    }
                }
            }
        });

将发送约30个请求,这对我来说是错误的:(

2 个答案:

答案 0 :(得分:1)

尝试此解决方案。方法loadMorePosts();仅当用户无法再垂直滚动时才会被调用。

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

            Boolean reachedBottom = !recyclerView.canScrollVertically(1);
            if (reachedBottom) {
                loadMorePosts();
            }
        }
     });
    })

创建方法loadMorePosts();您在哪里查询下一个数据。 或者,您将不得不查看新的分页库。 Documentation here.

答案 1 :(得分:1)

您可以尝试反转条件以达到滚动侦听器中的顶部,如下所示:

Sheets("SUMMARY").Range("D13:E14")
相关问题