21. public class ScrollingChildFragment implements IScrollingChild {
private IScrollingParent mScrollingParent;
private int mPagePosition;
@Override
public void adjustScroll(float headerTranslationY, boolean isHeaderExpanded) {
}
@Override
public void setScrollingParent(IScrollingParent scrolling) {
mScrollingParent = scrolling;
}
@Override
public void setPagePosition(int position) {
mPagePosition = position;
}
}
ChildFragment
22. mRecyclerView.addOnScrollListener(mScrollListener);
}
@Override
public void adjustScroll(float headerTranslationY, boolean isHeaderExpanded) {
}
@Override
public void setScrollingParent(IScrollingParent scrolling) {
mScrollingParent = scrolling;
}
@Override
public void setPagePosition(int position) {
mPagePosition = position;
}
class ScrollingOnScrollListener extends RecyclerView.OnScrollListener {
private int mScrollY = 0;
@Override
public void onScrolled(RecyclerView view, int dx, int dy) {
mScrollY += dy;
mScrollingParent.onChildScrolled(view, mPagePosition, mScrollY, dy);
}
public int getScrollY() {
return mScrollY;
}
}
}
ChildFragment
23. public class ScrollingChildFragment implements IScrollingChild {
private IScrollingParent mScrollingParent;
private int mPagePosition;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
mRecyclerView.addOnScrollListener(new ScrollingOnScrollListener());
}
@Override
public void adjustScroll(float headerTranslationY, boolean isHeaderExpanded) {
}
@Override
public void setScrollingParent(IScrollingParent scrolling) {
mScrollingParent = scrolling;
}
@Override
public void setPagePosition(int position) {
mPagePosition = position;
}
class ScrollingOnScrollListener extends RecyclerView.OnScrollListener {
private int mScrollY = 0;
@Override
public void onScrolled(RecyclerView view, int dx, int dy) {
mScrollY += dy;
mScrollingParent.onChildScrolled(view, mPagePosition, mScrollY, dy);
ChildFragment
24. public class ParentAdapter extends FragmentPagerAdapter {
private final ArrayList<Fragment> mFragments = new ArrayList<>();
public ParentAdapter(FragmentManager fm) {
super(fm);
}
}
ParentAdapter
25. public class ParentAdapter extends FragmentPagerAdapter {
private final ArrayList<Fragment> mFragments = new ArrayList<>();
private IScrollingParent mScrollingParent;
public ParentAdapter(FragmentManager fm) {
super(fm);
}
public void setIScrollingParent(IScrollingParent parent) {
mScrollingParent = parent;
}
}
ParentAdapter
26. public class ParentAdapter extends FragmentPagerAdapter {
private final ArrayList<Fragment> mFragments = new ArrayList<>();
private IScrollingParent mScrollingParent;
public ParentAdapter(FragmentManager fm) {
super(fm);
}
public void setIScrollingParent(IScrollingParent parent) {
mScrollingParent = parent;
}
public void addPageFragment(Fragment fragment) {
mFragments.add(fragment);
if(fragment instanceof IScrollingChild) {
int position = mFragments.indexOf(fragment);
IScrollingChild child = (IScrollingChild) fragment;
child.setPagePosition(position);
if (mScrollingParent != null) {
child.setScrollingParent(mScrollingParent);
}
}
}
}
ParentAdapter
27. public class ScrollingParentFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
ParentAdapter adapter = new ParentAdapter(getFragmentManager());
adapter.addPageFragment(getChildFragment(1));
adapter.addPageFragment(getChildFragment(2));
adapter.addPageFragment(getChildFragment(3));
mViewPager.setAdapter(pagerAdapter);
}
}
ParentFragment
28. public class ScrollingParentFragment implements IScrollingParent {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
ParentAdapter adapter = new ParentAdapter(getFragmentManager());
adapter.addPageFragment(getChildFragment(1));
adapter.addPageFragment(getChildFragment(2));
adapter.addPageFragment(getChildFragment(3));
mViewPager.setAdapter(pagerAdapter);
}
@Override
public void onChildScrolled(ScrollingView view, int pagePosition, int scrollY, int dy) {
mHeader.setTranslationY(-scrollY);
}
}
ParentFragment