diff --git a/src/com/android/contacts/list/ContactEntryListAdapter.java b/src/com/android/contacts/list/ContactEntryListAdapter.java
index 9da3704..c37010e 100644
--- a/src/com/android/contacts/list/ContactEntryListAdapter.java
+++ b/src/com/android/contacts/list/ContactEntryListAdapter.java
@@ -18,6 +18,7 @@
 import com.android.contacts.ContactPhotoLoader;
 import com.android.contacts.ContactsSectionIndexer;
 import com.android.contacts.R;
+import com.android.contacts.widget.PinnedHeaderListAdapter;
 import com.android.contacts.widget.TextWithHighlightingFactory;
 
 import android.app.patterns.CursorLoader;
@@ -53,7 +54,8 @@
     private boolean mSearchResultsMode;
 
     public ContactEntryListAdapter(Context context) {
-        super(context);
+        super(context, R.layout.list_section, R.id.header_text,
+                context.getResources().getColor(R.color.pinned_header_background));
     }
 
     public Context getContext() {
diff --git a/src/com/android/contacts/list/PinnedHeaderListAdapter.java b/src/com/android/contacts/widget/PinnedHeaderListAdapter.java
similarity index 77%
rename from src/com/android/contacts/list/PinnedHeaderListAdapter.java
rename to src/com/android/contacts/widget/PinnedHeaderListAdapter.java
index dd1542e..db99e14 100644
--- a/src/com/android/contacts/list/PinnedHeaderListAdapter.java
+++ b/src/com/android/contacts/widget/PinnedHeaderListAdapter.java
@@ -13,16 +13,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package com.android.contacts.list;
-
-import com.android.contacts.R;
-import com.android.contacts.widget.PinnedHeaderListView;
+package com.android.contacts.widget;
 
 import android.content.Context;
 import android.content.res.ColorStateList;
 import android.graphics.Color;
 import android.graphics.drawable.Drawable;
-import android.opengl.Visibility;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -36,22 +32,32 @@
 public abstract class PinnedHeaderListAdapter extends CursorAdapter
         implements SectionIndexer, PinnedHeaderListView.PinnedHeaderAdapter {
 
-    /**
-     * An approximation of the background color of the pinned header. This color
-     * is used when the pinned header is being pushed up.  At that point the header
-     * "fades away".  Rather than computing a faded bitmap based on the 9-patch
-     * normally used for the background, we will use a solid color, which will
-     * provide better performance and reduced complexity.
-     */
-    private int mPinnedHeaderBackgroundColor;
+    private final int mPinnedHeaderBackgroundColor;
+    private final int mSectionHeaderTextViewId;
+    private final int mSectionHeaderLayoutResId;
 
     private SectionIndexer mIndexer;
 
-    public PinnedHeaderListAdapter(Context context) {
+    /**
+     * Constructor.
+     *
+     * @param context
+     * @param sectionHeaderLayoutResourceId section header layout resource ID
+     * @param sectionHeaderTextViewId section header text view ID
+     * @param backgroundColor An approximation of the background color of the
+     *            pinned header. This color is used when the pinned header is
+     *            being pushed up. At that point the header "fades away". Rather
+     *            than computing a faded bitmap based on the 9-patch normally
+     *            used for the background, we will use a solid color, which will
+     *            provide better performance and reduced complexity.
+     */
+    public PinnedHeaderListAdapter(Context context, int sectionHeaderLayoutResourceId,
+            int sectionHeaderTextViewId, int backgroundColor) {
         super(context, null, false);
         this.mContext = context;
-        mPinnedHeaderBackgroundColor =
-                context.getResources().getColor(R.color.pinned_header_background);
+        mPinnedHeaderBackgroundColor = backgroundColor;
+        mSectionHeaderLayoutResId = sectionHeaderLayoutResourceId;
+        mSectionHeaderTextViewId = sectionHeaderTextViewId;
     }
 
     public void setIndexer(SectionIndexer indexer) {
@@ -97,7 +103,7 @@
      * visible or partially pushed up out of the view.
      */
     public int getPinnedHeaderState(int position) {
-        if (mIndexer == null || position < 0 || mCursor == null || mCursor.getCount() == 0) {
+        if (mIndexer == null || mCursor == null || mCursor.getCount() == 0) {
             return PINNED_HEADER_GONE;
         }
 
@@ -132,7 +138,7 @@
         PinnedHeaderCache cache = (PinnedHeaderCache)header.getTag();
         if (cache == null) {
             cache = new PinnedHeaderCache();
-            cache.titleView = (TextView)header.findViewById(R.id.header_text);
+            cache.titleView = (TextView)header.findViewById(mSectionHeaderTextViewId);
             cache.textColor = cache.titleView.getTextColors();
             cache.background = header.getBackground();
             header.setTag(cache);
@@ -163,6 +169,6 @@
     }
 
     public View createPinnedHeaderView(ViewGroup parent) {
-        return LayoutInflater.from(mContext).inflate(R.layout.list_section, parent, false);
+        return LayoutInflater.from(mContext).inflate(mSectionHeaderLayoutResId, parent, false);
     }
 }
diff --git a/src/com/android/contacts/widget/PinnedHeaderListView.java b/src/com/android/contacts/widget/PinnedHeaderListView.java
index bdc66d5..9562714 100644
--- a/src/com/android/contacts/widget/PinnedHeaderListView.java
+++ b/src/com/android/contacts/widget/PinnedHeaderListView.java
@@ -81,6 +81,7 @@
     private PinnedHeaderAdapter mAdapter;
     private View mHeaderView;
     private boolean mHeaderViewVisible;
+    private float mHeaderOffset;
     private int mHeaderViewWidth;
     private int mHeaderViewHeight;
 
@@ -130,7 +131,6 @@
     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
         super.onMeasure(widthMeasureSpec, heightMeasureSpec);
         if (mHeaderView != null) {
-            configureHeaderView(getFirstVisiblePosition() - getHeaderViewsCount());
             measureChild(mHeaderView, widthMeasureSpec, heightMeasureSpec);
             mHeaderViewWidth = mHeaderView.getMeasuredWidth();
             mHeaderViewHeight = mHeaderView.getMeasuredHeight();
@@ -141,7 +141,8 @@
     protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
         super.onLayout(changed, left, top, right, bottom);
         if (mHeaderView != null) {
-            mHeaderView.layout(0, mHeaderView.getTop(), mHeaderViewWidth, mHeaderViewHeight);
+            configureHeaderView(getFirstVisiblePosition() - getHeaderViewsCount());
+            mHeaderView.layout(0, 0, mHeaderViewWidth, mHeaderViewHeight);
         }
     }
 
@@ -173,9 +174,7 @@
 
             case PinnedHeaderAdapter.PINNED_HEADER_VISIBLE: {
                 mAdapter.configurePinnedHeader(mHeaderView, position, MAX_ALPHA);
-                if (mHeaderView.getTop() != 0) {
-                    mHeaderView.layout(0, 0, mHeaderViewWidth, mHeaderViewHeight);
-                }
+                mHeaderOffset = 0;
                 mHeaderViewVisible = true;
                 break;
             }
@@ -184,8 +183,8 @@
                 View firstView = getChildAt(0);
                 int bottom = firstView.getBottom();
                 int headerHeight = mHeaderViewHeight;
-                int y;
                 int alpha;
+                int y;
                 if (bottom < headerHeight) {
                     y = (bottom - headerHeight);
                     alpha = MAX_ALPHA * (headerHeight + y) / headerHeight;
@@ -194,9 +193,7 @@
                     alpha = MAX_ALPHA;
                 }
                 mAdapter.configurePinnedHeader(mHeaderView, position, alpha);
-                if (mHeaderView.getTop() != y) {
-                    mHeaderView.layout(0, y, headerHeight, headerHeight + y);
-                }
+                mHeaderOffset = y;
                 mHeaderViewVisible = true;
                 break;
             }
@@ -207,7 +204,10 @@
     protected void dispatchDraw(Canvas canvas) {
         super.dispatchDraw(canvas);
         if (mHeaderViewVisible) {
+            canvas.save();
+            canvas.translate(0, mHeaderOffset);
             drawChild(canvas, mHeaderView, getDrawingTime());
+            canvas.restore();
         }
     }
 }
