package edu.mit.mitmobile2; import android.view.View; import edu.mit.mitmobile2.SliderView.ScreenPosition; public abstract class AbstractSliderViewAdapter implements SliderView.Adapter{ private SliderInterface mPreviousInterface; private SliderInterface mCurrentInterface; private SliderInterface mNextInterface; private View mPreviousView; private View mCurrentView; private View mNextView; @Override public View getScreen(ScreenPosition screenPosition) { if (screenPosition == ScreenPosition.Next) { if (mNextView == null) { mNextInterface = getSliderInterface(screenPosition); mNextView = mNextInterface.getView(); } return mNextView; } else if (screenPosition == ScreenPosition.Current) { if (mCurrentView == null) { mCurrentInterface = getSliderInterface(screenPosition); mCurrentView = mCurrentInterface.getView(); } return mCurrentView; } else if (screenPosition == ScreenPosition.Previous) { if (mPreviousView == null) { mPreviousInterface = getSliderInterface(screenPosition); mPreviousView = mPreviousInterface.getView(); } return mPreviousView; } throw new RuntimeException("Invalid screen position passed into adapter"); } abstract public SliderInterface getSliderInterface(ScreenPosition screenPosition); @Override public void destroyScreen(ScreenPosition screenPosition) { // TODO Auto-generated method stub } @Override public void seek(ScreenPosition screenPosition) { if (screenPosition == ScreenPosition.Next) { mPreviousInterface = mCurrentInterface; mCurrentInterface = mNextInterface; mNextInterface = null; mPreviousView = mCurrentView; mCurrentView = mNextView; mNextView = null; } else if (screenPosition == ScreenPosition.Previous) { mNextInterface = mCurrentInterface; mCurrentInterface = mPreviousInterface; mPreviousInterface = null; mNextView = mCurrentView; mCurrentView = mPreviousView; mPreviousView = null; } mCurrentInterface.onSelected(); } @Override public void destroy() { } }