android - Scroll ViewPager's RecyclerView when page gets scrolled -


i have viewpager couple of recyclerviews pages. implement functionality recyclerviews on other pages move amount after user starts scrolling pages.

@override public void onpagescrolled(int position, float offset, int offsetpx) {     recyclerview view1 = getpage(position - 1);     recyclerview view2 = getpage(position + 1);      if(scrollneeded()) {       view1.scrollby(0, 200);       view2.scrollby(0, 200);     } } 

the problem have works fine if scroll through viewpager if scroll crazy fast, recyclerviews don't scrolled. guess somehow need synchronize method.

any idea how solve problem? user shouldn't see scroll.

viewpager keeps +1 page left , right preloaded. means

  • in beginning - current page , next one
  • at end - last page , previous one
  • anywhere else - current, previous , next

when user swipes fast through pages, there real case page (your recyclerview instance , adapter) still preparing, miss scrollby() call.

you can solve in different ways.

  1. easiest increasing number of cached off screen pages (e.g. 3) calling viewpager.setoffscreenpagelimit(3) - more viewpager.setoffscreenpagelimit(int). if rely on page refreshes every time user swipes, might issue.

  2. another option creating custom view recyclerview page , adding scroll value set outside, e.g.

    // in custom page view private recyclerview.adapter adapter; private boolean needtoscroll;  public void setneedtoscroll(boolean needtoscroll) {      this.needtoscroll = needtoscroll;      // if adapter not null (i.e. set), scroll     // , set value false     if (adapter != null) {         this.needtoscroll = false;         scrollby(0, 200);     } }  // , in place define adapter, after setting if (needtoscroll) {     needtoscroll = false;     scrollby(0, 200); } 

    finally view pager scroll listener

    @override public void onpagescrolled(int position, float offset, int offsetpx) {     if(scrollneeded()) {         page view1 = getpage(position - 1);         page view2 = getpage(position + 1);         view1.needtoscroll(true);         view2.needtoscroll(true);     } } 

Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -

How to provide Authorization & Authentication using Asp.net, C#? -