package architect.commons.adapter; import android.content.Context; import android.support.v4.view.PagerAdapter; import android.view.View; import android.view.ViewGroup; import java.util.Arrays; import java.util.List; import architect.StackablePath; import architect.StackFactory; import mortar.MortarScope; /** * @author Lukasz Piliszczuk - lukasz.pili@gmail.com */ public class StackablePagerAdapter extends PagerAdapter { private final Context context; private final List<StackablePath> paths; public StackablePagerAdapter(Context context, StackablePath... paths) { this(context, Arrays.asList(paths)); } public StackablePagerAdapter(Context context, List<StackablePath> paths) { this.context = context; this.paths = paths; } @Override public int getCount() { return paths.size(); } @Override public Object instantiateItem(ViewGroup container, int position) { StackablePath path = paths.get(position); Context pageContext = StackFactory.createContext(context, path, String.valueOf(position)); View newChild = path.createView(pageContext, container); container.addView(newChild); return newChild; } @Override public void destroyItem(ViewGroup container, int position, Object object) { View view = ((View) object); MortarScope scope = MortarScope.getScope(view.getContext()); container.removeView(view); scope.destroy(); } @Override public boolean isViewFromObject(View view, Object object) { return view.equals(object); } }