我看到了this个问题.这个问题的答案是可行的.但是…我必须创建向两侧滚动.这个答案帮助我达到了最低要求,但是当我到达列表顶部时,我不知道如何发送请求.我试图使用像这样的东西:
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 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","[]"); } } } });
但是这种情况:
if (loading&&recyclerVIEw.canScrollVertically(-1)){ if (prev_url != null) { Log.i("m","[]"); } }
将发送约30个请求,这对我来说是错误的:(最佳答案您可以尝试反转条件以达到滚动侦听器的顶部,如下所示:
recyclerVIEw.addOnScrollListener(new RecyclerVIEw.OnScrollListener() { @OverrIDe public voID onScrolled(@NonNull RecyclerVIEw recyclerVIEw,int dy) { if(dy > 0) //check for scroll down { visibleItemCount = mLayoutManager.getChildCount(); totalitemCount = mLayoutManager.getItemCount(); pastVisiblesItems = mLayoutManager.findFirstVisibleItemposition(); if (loading) { if ( (visibleItemCount + pastVisiblesItems) >= totalitemCount) { loading = false; Log.v("...","Last Item Wow !"); //Do pagination.. i.e. fetch new data } } } if(dy < 0) //check for scroll up { visibleItemCount = mLayoutManager.getChildCount(); pastVisiblesItems = mLayoutManager.findLastVisibleItemposition(); if (loading) { if ( (pastVisiblesItems - visibleItemCount) <= 0) { loading = false; Log.v("...","First Item Wow !"); //Do pagination.. i.e. fetch new data } } } } });
总结 以上是内存溢出为你收集整理的如何创建无尽的两个侧面滚动recyclerView? 全部内容,希望文章能够帮你解决如何创建无尽的两个侧面滚动recyclerView? 所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)