public void start() {
    if (mAdapter == null) {
      throw new RuntimeException("you must call setAdapter() before start");
    }

    if (!isStarted && mAdapter.getCount() > 1) {
      isStarted = true;
      postDelayed(mRunnable, mGap);
    }
  }
  private void setupAdapter() {
    removeAllViews();

    if (mAdapter.getCount() == 1) {
      mFirstView = mAdapter.getView(this);
      mAdapter.setItem(mFirstView, mAdapter.getItem(0));
      addView(mFirstView);
    } else {
      mFirstView = mAdapter.getView(this);
      mSecondView = mAdapter.getView(this);
      mAdapter.setItem(mFirstView, mAdapter.getItem(0));
      mAdapter.setItem(mSecondView, mAdapter.getItem(1));
      addView(mFirstView);
      addView(mSecondView);

      mPosition = 1;
      isStarted = false;
    }
    setBackgroundDrawable(mFirstView.getBackground());
  }