diff --git a/library/src/za/co/immedia/pinnedheaderlistview/PinnedHeaderListView.java b/library/src/za/co/immedia/pinnedheaderlistview/PinnedHeaderListView.java index 5af9e2f..99902bd 100644 --- a/library/src/za/co/immedia/pinnedheaderlistview/PinnedHeaderListView.java +++ b/library/src/za/co/immedia/pinnedheaderlistview/PinnedHeaderListView.java @@ -3,6 +3,7 @@ import android.content.Context; import android.graphics.Canvas; import android.util.AttributeSet; +import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.*; @@ -33,6 +34,7 @@ public static interface PinnedSectionedHeaderAdapter { private int mCurrentSection = 0; private int mWidthMode; private int mHeightMode; + private int firstVisibleItem; public PinnedHeaderListView(Context context) { super(context); @@ -77,7 +79,7 @@ public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCoun } return; } - + this.firstVisibleItem = firstVisibleItem; firstVisibleItem -= getHeaderViewsCount(); int section = mAdapter.getSectionForPosition(firstVisibleItem); @@ -96,7 +98,7 @@ public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCoun header.setVisibility(VISIBLE); if (pinnedHeaderHeight >= headerTop && headerTop > 0) { mHeaderOffset = headerTop - header.getHeight(); - } else if (headerTop <= 0) { + } else if (headerTop < 0) { header.setVisibility(INVISIBLE); } } @@ -145,14 +147,21 @@ protected void dispatchDraw(Canvas canvas) { super.dispatchDraw(canvas); if (mAdapter == null || !mShouldPin || mCurrentHeader == null) return; - int saveCount = canvas.save(); - canvas.translate(0, mHeaderOffset); - canvas.clipRect(0, 0, getWidth(), mCurrentHeader.getMeasuredHeight()); // needed - // for - // < - // HONEYCOMB - mCurrentHeader.draw(canvas); - canvas.restoreToCount(saveCount); + //no headerview + if(firstVisibleItem==0&&getChildAt(firstVisibleItem)!=null&& + getChildAt(firstVisibleItem).getTop()>=0){ + return; + }else{ + int saveCount = canvas.save(); + canvas.translate(0, mHeaderOffset); + canvas.clipRect(0, 0, getWidth(), mCurrentHeader.getMeasuredHeight()); // needed + // for + // < + // HONEYCOMB + mCurrentHeader.draw(canvas); + canvas.restoreToCount(saveCount); + } + } @Override