public void onScroll(AbsListView abslistview, int i, int j, int k) {
   if (mPinnedHeaderAdapter != null) {
     PinnedHeaderAdapter.PinnedHeaderStatus pinnedheaderstatus =
         mPinnedHeaderAdapter.getPinnedHeaderStatus(mNavBottom);
     if (pinnedheaderstatus != null) {
       mPinnedHeaderOffset = pinnedheaderstatus.pinnedHeaderOffset;
       mPinnedHeaderIsVisible = pinnedheaderstatus.pinnedHeaderIsVisible;
       if (pinnedheaderstatus.shouldRequestNewView) {
         mPinnedHeaderHeight = mPinnedHeaderAdapter.getPinnedHeaderHeight();
         mPinnedHeaderView = mPinnedHeaderAdapter.getPinnedHeaderView(mPinnedHeaderView);
         if (mPinnedHeaderView != null) {
           ensureHeaderHasLayoutParams(mPinnedHeaderView);
           measureHeader(mPinnedHeaderView);
           mPinnedHeaderAdapter.layoutPinnedHeader(
               mPinnedHeaderView,
               0,
               mPinnedHeaderOffset + mNavBottom,
               getWidth(),
               mNavBottom + mPinnedHeaderOffset + mPinnedHeaderHeight);
         }
       }
     }
   }
   if (mOnScrollListener != null) {
     mOnScrollListener.onScroll(abslistview, i, j, k);
   }
 }
  public void configureHeaderView(int position) {
    if (mHeaderView == null) {
      return;
    }

    int state = mAdapter.getPinnedHeaderState(position);
    switch (state) {
      case PinnedHeaderAdapter.PINNED_HEADER_GONE:
        {
          mHeaderViewVisible = false;
          break;
        }

      case PinnedHeaderAdapter.PINNED_HEADER_VISIBLE:
        {
          mAdapter.configurePinnedHeader(mHeaderView, position, MAX_ALPHA);
          if (mHeaderView.getTop() != 0) {
            mHeaderView.layout(0, 0, mHeaderViewWidth, mHeaderViewHeight);
          }
          mHeaderViewVisible = true;
          break;
        }

      case PinnedHeaderAdapter.PINNED_HEADER_PUSHED_UP:
        {
          View firstView = getChildAt(0);
          if (firstView != null) {
            int bottom = firstView.getBottom();
            int itemHeight = firstView.getHeight();
            int headerHeight = mHeaderView.getHeight();
            int y;
            int alpha;
            if (bottom < headerHeight) {
              y = (bottom - headerHeight);
              alpha = MAX_ALPHA * (headerHeight + y) / headerHeight;
            } else {
              y = 0;
              alpha = MAX_ALPHA;
            }
            mAdapter.configurePinnedHeader(mHeaderView, position, alpha);
            if (mHeaderView.getTop() != y) {
              mHeaderView.layout(0, y, mHeaderViewWidth, mHeaderViewHeight + y);
            }
            mHeaderViewVisible = true;
          }
          break;
        }
    }
  }