package com.zhuinden.simpleservicesexample.presentation.paths.b; import android.annotation.TargetApi; import android.content.Context; import android.support.v4.view.ViewPager; import android.util.AttributeSet; import android.widget.RelativeLayout; import com.zhuinden.simpleservicesexample.R; import com.zhuinden.simpleservicesexample.application.Key; import com.zhuinden.simpleservicesexample.utils.Composite; import com.zhuinden.simpleservicesexample.utils.Preconditions; import com.zhuinden.simpleservicesexample.utils.ServiceLocator; import com.zhuinden.simpleservicesexample.utils.ViewPagerAdapter; import com.zhuinden.simplestack.Backstack; import java.util.ArrayList; import java.util.Collections; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; /** * Created by Zhuinden on 2017.02.14.. */ public class BView extends RelativeLayout { public BView(Context context) { super(context); } public BView(Context context, AttributeSet attrs) { super(context, attrs); } public BView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @TargetApi(21) public BView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } @BindView(R.id.b_viewpager) ViewPager viewPager; @BindView(R.id.b_viewpager_2) ViewPager viewPager2; ViewPagerAdapter adapter; ViewPagerAdapter adapter2; List<Key> keys = new ArrayList<>(); @Override protected void onFinishInflate() { super.onFinishInflate(); Preconditions.checkNotNull(ServiceLocator.getService(getContext(), "A"), "Service should not be null"); Preconditions.checkNotNull(ServiceLocator.getService(getContext(), "B"), "Service should not be null"); ButterKnife.bind(this); B b = Backstack.getKey(getContext()); keys = (List)b.keys(); viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { viewPager2.setAdapter(null); adapter2.updateKeys(getNestedKeys(keys.get(position))); viewPager2.setAdapter(adapter2); } @Override public void onPageScrollStateChanged(int state) { } }); adapter = new ViewPagerAdapter(keys); adapter2 = new ViewPagerAdapter(Collections.emptyList()); viewPager.setAdapter(adapter = new ViewPagerAdapter(keys)); } List<Key> getNestedKeys(Key key) { if(key instanceof Composite) { return (List)((Composite)key).keys(); } else { return Collections.emptyList(); } } }