From 29f2547c495c716788348ab2c30f877cff2f2d81 Mon Sep 17 00:00:00 2001 From: Thibaut Faucher Date: Fri, 2 Aug 2013 12:03:51 +0200 Subject: [PATCH 01/90] Add version checking when getting AbslistView element "mSelectorPosition" in StickyListHeadersListView.java to avoid NoSuchFieldException when running on android version < 4.0 --- .../stickylistheaders/StickyListHeadersListView.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java index 5ad49b2d..6d9e5a99 100644 --- a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java @@ -125,9 +125,10 @@ public StickyListHeadersListView(Context context, AttributeSet attrs, selectorRectField.setAccessible(true); mSelectorRect = (Rect) selectorRectField.get(this); - mSelectorPositionField = AbsListView.class - .getDeclaredField("mSelectorPosition"); - mSelectorPositionField.setAccessible(true); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { + mSelectorPositionField = AbsListView.class.getDeclaredField("mSelectorPosition"); + mSelectorPositionField.setAccessible(true); + } } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { From 321d6b862069394a53470e47589d8d817627a375 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20Franco=20Gir=C3=A1ldez?= Date: Tue, 10 Sep 2013 13:42:23 +0200 Subject: [PATCH 02/90] fix maven build --- library/pom.xml | 4 ++-- pom.xml | 17 +++++++++-------- sample/pom.xml | 2 +- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/library/pom.xml b/library/pom.xml index ac41dd40..adf63688 100644 --- a/library/pom.xml +++ b/library/pom.xml @@ -16,13 +16,13 @@ - com.google.android + android android provided - src + src diff --git a/pom.xml b/pom.xml index 668139c4..ed92f706 100644 --- a/pom.xml +++ b/pom.xml @@ -47,17 +47,17 @@ UTF-8 1.6 - 4.1.1.4 - 16 + 4.2.2_r2 + 17 - com.google.android - android - ${android.version} - + android + android + ${android.version} + @@ -67,7 +67,7 @@ org.apache.maven.plugins maven-compiler-plugin - 2.5 + 3.1 ${java.version} ${java.version} @@ -77,9 +77,10 @@ com.jayway.maven.plugins.android.generation2 android-maven-plugin - 3.4.0 + 3.6.0 + ${env.ANDROID_HOME} ${android.platform} diff --git a/sample/pom.xml b/sample/pom.xml index db0e1296..ee776c6a 100644 --- a/sample/pom.xml +++ b/sample/pom.xml @@ -16,7 +16,7 @@ - com.google.android + android android provided From a95c739e4f487891ccff26db70d72684d0bc341c Mon Sep 17 00:00:00 2001 From: briangriffey Date: Wed, 11 Sep 2013 13:39:58 -0500 Subject: [PATCH 03/90] Fixed build file --- library/.gitignore | 2 ++ library/build.gradle | 15 +++++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 library/.gitignore diff --git a/library/.gitignore b/library/.gitignore new file mode 100644 index 00000000..f8b92c3a --- /dev/null +++ b/library/.gitignore @@ -0,0 +1,2 @@ +.gradle +build diff --git a/library/build.gradle b/library/build.gradle index 94f71af9..859eba2e 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -1,8 +1,19 @@ +buildscript { + repositories { + mavenCentral() + } + + dependencies { + classpath 'com.android.tools.build:gradle:0.5.+' + + } +} + apply plugin: 'android-library' android { - compileSdkVersion 17 - buildToolsVersion "17.0.0" + compileSdkVersion 18 + buildToolsVersion "18.0.1" sourceSets { main { From b616af5cf67e3969168fdc9dc76cd02edfcba481 Mon Sep 17 00:00:00 2001 From: briangriffey Date: Wed, 11 Sep 2013 14:30:50 -0500 Subject: [PATCH 04/90] updated gradle file to install in the local repository --- library/build.gradle | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/library/build.gradle b/library/build.gradle index 859eba2e..e92b3ab3 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -5,11 +5,14 @@ buildscript { dependencies { classpath 'com.android.tools.build:gradle:0.5.+' - } } apply plugin: 'android-library' +apply plugin: 'maven' + +version = "1.0.0-SNAPSHOT" +group = "com.emilsjolander" android { compileSdkVersion 18 @@ -24,3 +27,13 @@ android { } } } + +uploadArchives { + repositories { + mavenDeployer { + repository url: 'file://' + new File(System.getProperty('user.home'), '.m2/repository').absolutePath + pom.artifactId = "stickylistheaders" + } + } +} +task install(dependsOn: uploadArchives) \ No newline at end of file From 23064d4b20a7eb861e413f029bb57f2950f70cb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Sat, 14 Sep 2013 17:22:23 +0200 Subject: [PATCH 05/90] New implementation is fully functioning. Left to do: - add more list view delegate methods - add support for padding and clipToPadding flag - add xml attributes support --- .../stickylistheaders/AdapterWrapper.java | 5 +- .../StickyListHeadersListView.java | 760 +++++++----------- .../stickylistheaders/WrapperViewList.java | 172 ++++ sample/res/layout/fragment_test.xml | 14 +- sample/res/values/colors.xml | 4 +- .../stickylistheaders/test/TestFragment.java | 19 +- 6 files changed, 465 insertions(+), 509 deletions(-) create mode 100644 library/src/com/emilsjolander/components/stickylistheaders/WrapperViewList.java diff --git a/library/src/com/emilsjolander/components/stickylistheaders/AdapterWrapper.java b/library/src/com/emilsjolander/components/stickylistheaders/AdapterWrapper.java index ad29235b..7c4e3543 100644 --- a/library/src/com/emilsjolander/components/stickylistheaders/AdapterWrapper.java +++ b/library/src/com/emilsjolander/components/stickylistheaders/AdapterWrapper.java @@ -25,8 +25,7 @@ */ class AdapterWrapper extends BaseAdapter implements StickyListHeadersAdapter { - - public interface OnHeaderClickListener{ + interface OnHeaderClickListener { public void onHeaderClick(View header, int itemPosition, long headerId); } @@ -116,6 +115,8 @@ public boolean isEmpty() { private void recycleHeaderIfExists(WrapperView wv) { View header = wv.mHeader; if (header != null) { + // reset the headers visibility when adding it to the cache + header.setVisibility(View.VISIBLE); mHeaderCache.add(header); } } diff --git a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java index 6d9e5a99..67b20fd6 100644 --- a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java @@ -1,608 +1,400 @@ package com.emilsjolander.components.stickylistheaders; -import java.lang.reflect.Field; -import java.util.ArrayList; - import android.annotation.SuppressLint; import android.content.Context; import android.database.DataSetObserver; import android.graphics.Canvas; -import android.graphics.Rect; -import android.graphics.drawable.Drawable; import android.os.Build; import android.util.AttributeSet; -import android.view.MotionEvent; import android.view.View; -import android.view.ViewConfiguration; -import android.view.ViewGroup; import android.widget.AbsListView; -import android.widget.ListAdapter; -import android.widget.ListView; -import android.widget.SectionIndexer; +import android.widget.AbsListView.OnScrollListener; +import android.widget.AdapterView.OnItemClickListener; +import android.widget.FrameLayout; + +import com.emilsjolander.components.stickylistheaders.WrapperViewList.LifeCycleListener; /** * @author Emil Sjölander + * + * Even though this is a FrameLayout subclass we it is called a + * ListView. This is because of 2 reasons. 1. It acts like as ListView + * 2. It used to be a ListView subclass and i did not was to change to + * name causing compatibility errors. + * */ -public class StickyListHeadersListView extends ListView { +public class StickyListHeadersListView extends FrameLayout { public interface OnHeaderClickListener { public void onHeaderClick(StickyListHeadersListView l, View header, int itemPosition, long headerId, boolean currentlySticky); } - private OnScrollListener mOnScrollListenerDelegate; - private boolean mAreHeadersSticky = true; - private int mHeaderBottomPosition; + /* --- Children --- */ + private WrapperViewList mList; private View mHeader; - private int mDividerHeight; - private Drawable mDivider; - private Boolean mClippingToPadding; - private final Rect mClippingRect = new Rect(); - private Long mCurrentHeaderId = null; - private AdapterWrapper mAdapter; - private float mHeaderDownY = -1; - private boolean mHeaderBeingPressed = false; - private OnHeaderClickListener mOnHeaderClickListener; - private Integer mHeaderPosition; - private ViewConfiguration mViewConfig; - private ArrayList mFooterViews; - private boolean mDrawingListUnderStickyHeader = false; - private Rect mSelectorRect = new Rect();// for if reflection fails - private Field mSelectorPositionField; - - private AdapterWrapper.OnHeaderClickListener mAdapterHeaderClickListener = new AdapterWrapper.OnHeaderClickListener() { - - @Override - public void onHeaderClick(View header, int itemPosition, long headerId) { - if (mOnHeaderClickListener != null) { - mOnHeaderClickListener.onHeaderClick( - StickyListHeadersListView.this, header, itemPosition, - headerId, false); - } - } - }; - private DataSetObserver mDataSetChangedObserver = new DataSetObserver() { - @Override - public void onChanged() { - reset(); - } - - @Override - public void onInvalidated() { - reset(); - } - }; + /* --- Header state --- */ + private Long mHeaderId; + // used to not have to call getHeaderId() all the time + private Integer mHeaderPosition; + private Integer mHeaderOffset; - private OnScrollListener mOnScrollListener = new OnScrollListener() { + /* --- Delegates --- */ + private OnScrollListener mOnScrollListenerDelegate; - @Override - public void onScrollStateChanged(AbsListView view, int scrollState) { - if (mOnScrollListenerDelegate != null) { - mOnScrollListenerDelegate.onScrollStateChanged(view, - scrollState); - } - } + /* --- Settings --- */ + private boolean mAreHeadersSticky = true; + private boolean mClippingToPadding = true; + private boolean mIsDrawingListUnderStickyHeader = true; - @Override - public void onScroll(AbsListView view, int firstVisibleItem, - int visibleItemCount, int totalItemCount) { - if (mOnScrollListenerDelegate != null) { - mOnScrollListenerDelegate.onScroll(view, firstVisibleItem, - visibleItemCount, totalItemCount); - } - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO) { - scrollChanged(firstVisibleItem); - } - } - }; + /* --- Other --- */ + private AdapterWrapper mAdapter; + private OnHeaderClickListener mOnHeaderClickListener; public StickyListHeadersListView(Context context) { this(context, null); } public StickyListHeadersListView(Context context, AttributeSet attrs) { - this(context, attrs, android.R.attr.listViewStyle); + this(context, attrs, 0); } public StickyListHeadersListView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); - super.setOnScrollListener(mOnScrollListener); - // null out divider, dividers are handled by adapter so they look good - // with headers - super.setDivider(null); - super.setDividerHeight(0); - mViewConfig = ViewConfiguration.get(context); - if (mClippingToPadding == null) { - mClippingToPadding = true; - } - - try { - Field selectorRectField = AbsListView.class - .getDeclaredField("mSelectorRect"); - selectorRectField.setAccessible(true); - mSelectorRect = (Rect) selectorRectField.get(this); - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { - mSelectorPositionField = AbsListView.class.getDeclaredField("mSelectorPosition"); - mSelectorPositionField.setAccessible(true); - } - } catch (NoSuchFieldException e) { - e.printStackTrace(); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } + // Initialize the list + mList = new WrapperViewList(context); + mList.setLifeCycleListener(new WrapperViewListLifeCycleListener()); + mList.setOnScrollListener(new WrapperListScrollListener()); + addView(mList); } @Override - protected void onLayout(boolean changed, int l, int t, int r, int b) { - super.onLayout(changed, l, t, r, b); - if (changed) { - reset(); - scrollChanged(getFirstVisiblePosition()); + protected void dispatchDraw(Canvas canvas) { + // Only draw the list here. + // The header should be drawn right after the lists children are drawn. + // This is done so that the header is above the list items + // but below the list decorators (scroll bars etc). + drawChild(canvas, mList, 0); + } + + // Reset values tied the header. also remove header form layout + // This is called in response to the data set or the adapter changing + private void clearHeader() { + if (mHeader != null) { + removeView(mHeader); + mHeader = null; + mHeaderId = null; + mHeaderPosition = null; + mHeaderOffset = null; + + // reset the top clipping length + mList.setTopClippingLength(0); + updateHeaderVisibilities(); } } - private void reset() { - mHeader = null; - mCurrentHeaderId = null; - mHeaderPosition = null; - mHeaderBottomPosition = -1; - } - - @Override - public boolean performItemClick(View view, int position, long id) { - if (view instanceof WrapperView) { - view = ((WrapperView) view).mItem; + private void updateOrClearHeader(int firstVisiblePosition) { + int adapterCount = mAdapter == null ? 0 : mAdapter.getCount(); + if (adapterCount == 0 || !mAreHeadersSticky) { + return; } - return super.performItemClick(view, position, id); - } - @Override - public void setSelectionFromTop(int position, int y) { - if (hasStickyHeaderAtPosition(position)) { - y += getHeaderHeight(); - } - super.setSelectionFromTop(position, y); - } + final int headerViewCount = mList.getHeaderViewsCount(); + final int realFirstVisibleItem = firstVisiblePosition - headerViewCount; - @SuppressLint("NewApi") - @Override - public void smoothScrollToPositionFromTop(int position, int offset) { - if (hasStickyHeaderAtPosition(position)) { - offset += getHeaderHeight(); + if (mList.getChildCount() == 0 || realFirstVisibleItem < 0 + || realFirstVisibleItem > adapterCount - 1) { + clearHeader(); + return; } - super.smoothScrollToPositionFromTop(position, offset); - } - @SuppressLint("NewApi") - @Override - public void smoothScrollToPositionFromTop(int position, int offset, - int duration) { - if (hasStickyHeaderAtPosition(position)) { - offset += getHeaderHeight(); - } - super.smoothScrollToPositionFromTop(position, offset, duration); + updateHeader(realFirstVisibleItem); } - private boolean hasStickyHeaderAtPosition(int position) { - position -= getHeaderViewsCount(); - return mAreHeadersSticky - && position > 0 - && position < mAdapter.getCount() - && mAdapter.getHeaderId(position) == mAdapter - .getHeaderId(position - 1); - } + private void updateHeader(int firstVisiblePosition) { - @Override - public void setDivider(Drawable divider) { - this.mDivider = divider; - if (divider != null) { - int dividerDrawableHeight = divider.getIntrinsicHeight(); - if (dividerDrawableHeight >= 0) { - setDividerHeight(dividerDrawableHeight); + // check if there is a new header in town + if (mHeaderPosition == null || mHeaderPosition != firstVisiblePosition) { + mHeaderPosition = firstVisiblePosition; + final long headerId = mAdapter.getHeaderId(firstVisiblePosition); + if (mHeaderId == null || mHeaderId != headerId) { + mHeaderId = headerId; + final View header = mAdapter.getHeaderView(mHeaderPosition, + mHeader, this); + if (mHeader != header) { + if (header == null) { + throw new NullPointerException("header may not be null"); + } + swapHeader(header); + } + + // Reset mHeaderOffset to null ensuring + // that it will be set on the header and + // not skipped for performance reasons. + mHeaderOffset = null; } } - if (mAdapter != null) { - mAdapter.setDivider(divider); - requestLayout(); - invalidate(); - } - } - @Override - public void setDividerHeight(int height) { - mDividerHeight = height; - if (mAdapter != null) { - mAdapter.setDividerHeight(height); - requestLayout(); - invalidate(); + int headerOffset = 0; + + // Calculate new header offset + // Skip looking at the first view. it never matters because it always + // results in a headerOffset = 0 + for (int i = 1; i < mList.getChildCount(); i++) { + final View child = mList.getChildAt(i); + final boolean doesChildHaveHeader = child instanceof WrapperView + && ((WrapperView) child).hasHeader(); + final boolean isChildFooter = mList.containsFooterView(child); + if (doesChildHaveHeader || isChildFooter) { + headerOffset = Math + .min(child.getTop() - mHeader.getBottom(), 0); + break; + } } - } - @Override - public void setOnScrollListener(OnScrollListener l) { - mOnScrollListenerDelegate = l; - } + setHeaderOffet(headerOffset); - public void setAreHeadersSticky(boolean areHeadersSticky) { - if (this.mAreHeadersSticky != areHeadersSticky) { - this.mAreHeadersSticky = areHeadersSticky; - requestLayout(); + if (!mIsDrawingListUnderStickyHeader) { + mList.setTopClippingLength(mHeader.getHeight() + mHeaderOffset); } - } - public boolean getAreHeadersSticky() { - return mAreHeadersSticky; + updateHeaderVisibilities(); } - @Override - public void setAdapter(ListAdapter adapter) { - if (this.isInEditMode()) { - super.setAdapter(adapter); - return; + private void swapHeader(View newHeader) { + if (mHeader != null) { + removeView(mHeader); } - if (adapter == null) { - mAdapter = null; - reset(); - super.setAdapter(null); - return; - } - if (!(adapter instanceof StickyListHeadersAdapter)) { - throw new IllegalArgumentException( - "Adapter must implement StickyListHeadersAdapter"); - } - mAdapter = wrapAdapter(adapter); - reset(); - super.setAdapter(this.mAdapter); + mHeader = newHeader; + addView(mHeader); + + mHeader.setOnClickListener(new OnClickListener() { + + @Override + public void onClick(View v) { + mOnHeaderClickListener.onHeaderClick( + StickyListHeadersListView.this, mHeader, + mHeaderPosition, mHeaderId, true); + } + }); } - private AdapterWrapper wrapAdapter(ListAdapter adapter) { - AdapterWrapper wrapper; - if (adapter instanceof SectionIndexer) { - wrapper = new SectionIndexerAdapterWrapper(getContext(), - (StickyListHeadersAdapter) adapter); + // hides the headers in the list under the sticky header. + // Makes sure the other ones are showing + private void updateHeaderVisibilities() { + int top; + if (mHeader != null) { + top = mHeader.getHeight() + + (mHeaderOffset != null ? mHeaderOffset : 0); } else { - wrapper = new AdapterWrapper(getContext(), - (StickyListHeadersAdapter) adapter); + top = mClippingToPadding ? getPaddingTop() : 0; + } + int childCount = mList.getChildCount(); + for (int i = 0; i < childCount; i++) { + View child = mList.getChildAt(i); + if (child instanceof WrapperView) { + WrapperView wrapperViewChild = (WrapperView) child; + if (wrapperViewChild.hasHeader()) { + View childHeader = wrapperViewChild.mHeader; + if (wrapperViewChild.getTop() < top) { + if (childHeader.getVisibility() != View.INVISIBLE) { + childHeader.setVisibility(View.INVISIBLE); + } + } else { + if (childHeader.getVisibility() != View.VISIBLE) { + childHeader.setVisibility(View.VISIBLE); + } + } + } + } } - wrapper.setDivider(mDivider); - wrapper.setDividerHeight(mDividerHeight); - wrapper.registerDataSetObserver(mDataSetChangedObserver); - wrapper.setOnHeaderClickListener(mAdapterHeaderClickListener); - return wrapper; } - public StickyListHeadersAdapter getWrappedAdapter() { - return mAdapter == null ? null : mAdapter.mDelegate; + // Wrapper around setting the header offset in different ways depending on + // the API version + @SuppressLint("NewApi") + private void setHeaderOffet(int offset) { + if (mHeaderOffset == null || mHeaderOffset != offset) { + mHeaderOffset = offset; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { + mHeader.setTranslationY(mHeaderOffset); + } else { + MarginLayoutParams params = (MarginLayoutParams) mHeader + .getLayoutParams(); + params.topMargin = mHeaderOffset; + mHeader.setLayoutParams(params); + } + } } - public View getWrappedView(int position) { - View view = getChildAt(position); - if ((view instanceof WrapperView)) - return ((WrapperView) view).mItem; - return view; - } + private class AdapterWrapperDataSetObserver extends DataSetObserver { - @Override - protected void dispatchDraw(Canvas canvas) { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.FROYO) { - scrollChanged(getFirstVisiblePosition()); - } - positionSelectorRect(); - if (!mAreHeadersSticky || mHeader == null) { - super.dispatchDraw(canvas); - return; + @Override + public void onChanged() { + clearHeader(); } - if (!mDrawingListUnderStickyHeader) { - mClippingRect - .set(0, mHeaderBottomPosition, getWidth(), getHeight()); - canvas.save(); - canvas.clipRect(mClippingRect); + @Override + public void onInvalidated() { + clearHeader(); } - super.dispatchDraw(canvas); + } - if (!mDrawingListUnderStickyHeader) { - canvas.restore(); - } + private class WrapperListScrollListener implements OnScrollListener { - drawStickyHeader(canvas); - } + @Override + public void onScroll(AbsListView view, int firstVisibleItem, + int visibleItemCount, int totalItemCount) { + if (mOnScrollListenerDelegate != null) { + mOnScrollListenerDelegate.onScroll(view, firstVisibleItem, + visibleItemCount, totalItemCount); + } + updateOrClearHeader(mList.getFixedFirstVisibleItem()); + } - private void positionSelectorRect() { - if (!mSelectorRect.isEmpty()) { - int selectorPosition = getSelectorPosition(); - if (selectorPosition >= 0) { - int firstVisibleItem = fixedFirstVisibleItem(getFirstVisiblePosition()); - View v = getChildAt(selectorPosition - firstVisibleItem); - if (v instanceof WrapperView) { - WrapperView wrapper = ((WrapperView) v); - mSelectorRect.top = wrapper.getTop() + wrapper.mItemTop; - } + @Override + public void onScrollStateChanged(AbsListView view, int scrollState) { + if (mOnScrollListenerDelegate != null) { + mOnScrollListenerDelegate.onScrollStateChanged(view, + scrollState); } } + } - private int getSelectorPosition() { - if (mSelectorPositionField == null) { // not all supported andorid - // version have this variable - for (int i = 0; i < getChildCount(); i++) { - if (getChildAt(i).getBottom() == mSelectorRect.bottom) { - return i + fixedFirstVisibleItem(getFirstVisiblePosition()); - } - } - } else { - try { - return mSelectorPositionField.getInt(this); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); + private class WrapperViewListLifeCycleListener implements LifeCycleListener { + + @Override + public void onDispatchDrawOccurred(Canvas canvas) { + if (mHeader != null) { + drawChild(canvas, mHeader, 0); } } - return -1; - } - - private void drawStickyHeader(Canvas canvas) { - int headerHeight = getHeaderHeight(); - int top = mHeaderBottomPosition - headerHeight; - // clip the headers drawing region - mClippingRect.left = getPaddingLeft(); - mClippingRect.right = getWidth() - getPaddingRight(); - mClippingRect.bottom = top + headerHeight; - mClippingRect.top = mClippingToPadding ? getPaddingTop() : 0; - - canvas.save(); - canvas.clipRect(mClippingRect); - canvas.translate(getPaddingLeft(), top); - mHeader.draw(canvas); - canvas.restore(); - } - - private void measureHeader() { - - int widthMeasureSpec = MeasureSpec.makeMeasureSpec(getWidth() - - getPaddingLeft() - getPaddingRight() - - (isScrollBarOverlay() ? 0 : getVerticalScrollbarWidth()), - MeasureSpec.EXACTLY); - int heightMeasureSpec = 0; - - ViewGroup.LayoutParams params = mHeader.getLayoutParams(); - if (params == null) { - mHeader.setLayoutParams(new ViewGroup.MarginLayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.WRAP_CONTENT)); - + + } + + private class AdapterWrapperHeaderClickHandler implements + AdapterWrapper.OnHeaderClickListener { + + @Override + public void onHeaderClick(View header, int itemPosition, long headerId) { + mOnHeaderClickListener.onHeaderClick( + StickyListHeadersListView.this, header, itemPosition, + headerId, false); } - if (params != null && params.height > 0) { - heightMeasureSpec = MeasureSpec.makeMeasureSpec(params.height, - MeasureSpec.EXACTLY); + + } + + /* ---------- StickyListHeaders specific API ---------- */ + + public void setAreHeadersSticky(boolean areHeadersSticky) { + mAreHeadersSticky = areHeadersSticky; + if (!areHeadersSticky) { + clearHeader(); } else { - heightMeasureSpec = MeasureSpec.makeMeasureSpec(0, - MeasureSpec.UNSPECIFIED); - } - mHeader.measure(widthMeasureSpec, heightMeasureSpec); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { - mHeader.setLayoutDirection(this.getLayoutDirection()); + updateOrClearHeader(mList.getFixedFirstVisibleItem()); } - - mHeader.layout(getPaddingLeft(), 0, getWidth() - getPaddingRight(), - mHeader.getMeasuredHeight()); + // invalidating the list will trigger dispatchDraw() + mList.invalidate(); } - private boolean isScrollBarOverlay() { - int scrollBarStyle = getScrollBarStyle(); - return scrollBarStyle == SCROLLBARS_INSIDE_OVERLAY - || scrollBarStyle == SCROLLBARS_OUTSIDE_OVERLAY; + public boolean areHeadersSticky() { + return mAreHeadersSticky; } - private int getHeaderHeight() { - return mHeader == null ? 0 : mHeader.getMeasuredHeight(); + /** + * Use areHeadersSticky() method instead + */ + @Deprecated + public boolean getAreHeadersSticky() { + return areHeadersSticky(); } - @Override - public void setClipToPadding(boolean clipToPadding) { - super.setClipToPadding(clipToPadding); - mClippingToPadding = clipToPadding; + public void setDrawingListUnderStickyHeader( + boolean drawingListUnderStickyHeader) { + mIsDrawingListUnderStickyHeader = drawingListUnderStickyHeader; + // reset the top clipping length + mList.setTopClippingLength(0); } - private void scrollChanged(int reportedFirstVisibleItem) { + public boolean isDrawingListUnderStickyHeader() { + return mIsDrawingListUnderStickyHeader; + } - int adapterCount = mAdapter == null ? 0 : mAdapter.getCount(); - if (adapterCount == 0 || !mAreHeadersSticky) { - return; + public void setOnHeaderClickListener( + OnHeaderClickListener onHeaderClickListener) { + mOnHeaderClickListener = onHeaderClickListener; + if (mAdapter != null) { + if (mOnHeaderClickListener != null) { + mAdapter.setOnHeaderClickListener(new AdapterWrapperHeaderClickHandler()); + } else { + mAdapter.setOnHeaderClickListener(null); + } } + } - final int listViewHeaderCount = getHeaderViewsCount(); - final int firstVisibleItem = fixedFirstVisibleItem(reportedFirstVisibleItem) - - listViewHeaderCount; + /* ---------- ListView delegate methods ---------- */ - if (firstVisibleItem < 0 || firstVisibleItem > adapterCount - 1) { - reset(); - updateHeaderVisibilities(); - invalidate(); - return; - } + public void setAdapter(StickyListHeadersAdapter adapter) { + mAdapter = new AdapterWrapper(getContext(), adapter); + mAdapter.registerDataSetObserver(new AdapterWrapperDataSetObserver()); - if (mHeaderPosition == null || mHeaderPosition != firstVisibleItem) { - mHeaderPosition = firstVisibleItem; - mCurrentHeaderId = mAdapter.getHeaderId(firstVisibleItem); - mHeader = mAdapter.getHeaderView(mHeaderPosition, mHeader, this); - measureHeader(); + if (mOnHeaderClickListener != null) { + mAdapter.setOnHeaderClickListener(new AdapterWrapperHeaderClickHandler()); + } else { + mAdapter.setOnHeaderClickListener(null); } - int childCount = getChildCount(); - if (childCount != 0) { - View viewToWatch = null; - int watchingChildDistance = Integer.MAX_VALUE; - boolean viewToWatchIsFooter = false; - - for (int i = 0; i < childCount; i++) { - final View child = super.getChildAt(i); - final boolean childIsFooter = mFooterViews != null - && mFooterViews.contains(child); - - final int childDistance = child.getTop() - - (mClippingToPadding ? getPaddingTop() : 0); - if (childDistance < 0) { - continue; - } - - if (viewToWatch == null - || (!viewToWatchIsFooter && !((WrapperView) viewToWatch) - .hasHeader()) - || ((childIsFooter || ((WrapperView) child).hasHeader()) && childDistance < watchingChildDistance)) { - viewToWatch = child; - viewToWatchIsFooter = childIsFooter; - watchingChildDistance = childDistance; - } - } + mList.setAdapter(mAdapter); + clearHeader(); + } - final int headerHeight = getHeaderHeight(); - if (viewToWatch != null - && (viewToWatchIsFooter || ((WrapperView) viewToWatch) - .hasHeader())) { - if (firstVisibleItem == listViewHeaderCount - && super.getChildAt(0).getTop() > 0 - && !mClippingToPadding) { - mHeaderBottomPosition = 0; - } else { - final int paddingTop = mClippingToPadding ? getPaddingTop() - : 0; - mHeaderBottomPosition = Math.min(viewToWatch.getTop(), - headerHeight + paddingTop); - mHeaderBottomPosition = mHeaderBottomPosition < paddingTop ? headerHeight - + paddingTop - : mHeaderBottomPosition; - } - } else { - mHeaderBottomPosition = headerHeight - + (mClippingToPadding ? getPaddingTop() : 0); - } - } - updateHeaderVisibilities(); - invalidate(); + public StickyListHeadersAdapter getAdapter() { + return mAdapter == null ? null : mAdapter.mDelegate; } - @Override - public void addFooterView(View v) { - super.addFooterView(v); - if (mFooterViews == null) { - mFooterViews = new ArrayList(); - } - mFooterViews.add(v); + public void setOnScrollListener(OnScrollListener onScrollListener) { + mOnScrollListenerDelegate = onScrollListener; } - @Override - public boolean removeFooterView(View v) { - if (super.removeFooterView(v)) { - mFooterViews.remove(v); - return true; - } - return false; + public void setOnItemClickListener(OnItemClickListener listener) { + mList.setOnItemClickListener(listener); } - private void updateHeaderVisibilities() { - int top = mClippingToPadding ? getPaddingTop() : 0; - int childCount = getChildCount(); - for (int i = 0; i < childCount; i++) { - View child = super.getChildAt(i); - if (child instanceof WrapperView) { - WrapperView wrapperViewChild = (WrapperView) child; - if (wrapperViewChild.hasHeader()) { - View childHeader = wrapperViewChild.mHeader; - if (wrapperViewChild.getTop() < top) { - childHeader.setVisibility(View.INVISIBLE); - } else { - childHeader.setVisibility(View.VISIBLE); - } - } - } - } + public void addHeaderView(View v) { + mList.addHeaderView(v); } - private int fixedFirstVisibleItem(int firstVisibleItem) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { - return firstVisibleItem; - } + public void removeHeaderView(View v) { + mList.removeHeaderView(v); + } - for (int i = 0; i < getChildCount(); i++) { - if (getChildAt(i).getBottom() >= 0) { - firstVisibleItem += i; - break; - } - } + public int getHeaderViewsCount() { + return mList.getHeaderViewsCount(); + } - // work around to fix bug with firstVisibleItem being to high because - // listview does not take clipToPadding=false into account - if (!mClippingToPadding && getPaddingTop() > 0) { - if (super.getChildAt(0).getTop() > 0) { - if (firstVisibleItem > 0) { - firstVisibleItem -= 1; - } - } - } - return firstVisibleItem; + public void addFooterView(View v) { + mList.addFooterView(v); } - public void setOnHeaderClickListener( - OnHeaderClickListener onHeaderClickListener) { - this.mOnHeaderClickListener = onHeaderClickListener; + public void removeFooterView(View v) { + mList.removeFooterView(v); } - public void setDrawingListUnderStickyHeader( - boolean drawingListUnderStickyHeader) { - mDrawingListUnderStickyHeader = drawingListUnderStickyHeader; + public int getFooterViewsCount() { + return mList.getFooterViewsCount(); } - public boolean isDrawingListUnderStickyHeader() { - return mDrawingListUnderStickyHeader; + public void setEmptyView(View v) { + mList.setEmptyView(v); } - // TODO handle touches better, multitouch etc. - @Override - public boolean onTouchEvent(MotionEvent ev) { - int action = ev.getAction(); - if (action == MotionEvent.ACTION_DOWN - && ev.getY() <= mHeaderBottomPosition) { - mHeaderDownY = ev.getY(); - mHeaderBeingPressed = true; - mHeader.setPressed(true); - mHeader.invalidate(); - invalidate(0, 0, getWidth(), mHeaderBottomPosition); - return true; - } - if (mHeaderBeingPressed) { - if (Math.abs(ev.getY() - mHeaderDownY) < mViewConfig - .getScaledTouchSlop()) { - if (action == MotionEvent.ACTION_UP - || action == MotionEvent.ACTION_CANCEL) { - mHeaderDownY = -1; - mHeaderBeingPressed = false; - mHeader.setPressed(false); - mHeader.invalidate(); - invalidate(0, 0, getWidth(), mHeaderBottomPosition); - if (mOnHeaderClickListener != null) { - mOnHeaderClickListener.onHeaderClick(this, mHeader, - mHeaderPosition, mCurrentHeaderId, true); - } - } - return true; - } else { - mHeaderDownY = -1; - mHeaderBeingPressed = false; - mHeader.setPressed(false); - mHeader.invalidate(); - invalidate(0, 0, getWidth(), mHeaderBottomPosition); - } - } - return super.onTouchEvent(ev); + public View setEmptyView() { + return mList.getEmptyView(); } } diff --git a/library/src/com/emilsjolander/components/stickylistheaders/WrapperViewList.java b/library/src/com/emilsjolander/components/stickylistheaders/WrapperViewList.java new file mode 100644 index 00000000..6c6f67b8 --- /dev/null +++ b/library/src/com/emilsjolander/components/stickylistheaders/WrapperViewList.java @@ -0,0 +1,172 @@ +package com.emilsjolander.components.stickylistheaders; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Rect; +import android.os.Build; +import android.view.View; +import android.widget.AbsListView; +import android.widget.ListView; + +class WrapperViewList extends ListView { + + interface LifeCycleListener { + void onDispatchDrawOccurred(Canvas canvas); + } + + private LifeCycleListener mLifeCycleListener; + private List mFooterViews; + private int mTopClippingLength; + private Rect mSelectorRect = new Rect();// for if reflection fails + private Field mSelectorPositionField; + + public WrapperViewList(Context context) { + super(context); + + // null out divider, dividers are handled by adapter so they look good + // with headers + super.setDivider(null); + super.setDividerHeight(0); + + // Use reflection to be able to change the size/position of the list + // selector so it does not come under/over the header + try { + Field selectorRectField = AbsListView.class + .getDeclaredField("mSelectorRect"); + selectorRectField.setAccessible(true); + mSelectorRect = (Rect) selectorRectField.get(this); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { + mSelectorPositionField = AbsListView.class + .getDeclaredField("mSelectorPosition"); + mSelectorPositionField.setAccessible(true); + } + } catch (NoSuchFieldException e) { + e.printStackTrace(); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + + @Override + public boolean performItemClick(View view, int position, long id) { + if (view instanceof WrapperView) { + view = ((WrapperView) view).mItem; + } + return super.performItemClick(view, position, id); + } + + private void positionSelectorRect() { + if (!mSelectorRect.isEmpty()) { + int selectorPosition = getSelectorPosition(); + if (selectorPosition >= 0) { + int firstVisibleItem = getFixedFirstVisibleItem(); + View v = getChildAt(selectorPosition - firstVisibleItem); + if (v instanceof WrapperView) { + WrapperView wrapper = ((WrapperView) v); + mSelectorRect.top = wrapper.getTop() + wrapper.mItemTop; + } + } + } + } + + private int getSelectorPosition() { + if (mSelectorPositionField == null) { // not all supported andorid + // version have this variable + for (int i = 0; i < getChildCount(); i++) { + if (getChildAt(i).getBottom() == mSelectorRect.bottom) { + return i + getFixedFirstVisibleItem(); + } + } + } else { + try { + return mSelectorPositionField.getInt(this); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + return -1; + } + + @Override + protected void dispatchDraw(Canvas canvas) { + positionSelectorRect(); + if (mTopClippingLength != 0) { + canvas.save(); + Rect clipping = canvas.getClipBounds(); + clipping.top = mTopClippingLength; + canvas.clipRect(clipping); + super.dispatchDraw(canvas); + canvas.restore(); + } else { + super.dispatchDraw(canvas); + } + mLifeCycleListener.onDispatchDrawOccurred(canvas); + } + + void setLifeCycleListener(LifeCycleListener lifeCycleListener) { + mLifeCycleListener = lifeCycleListener; + } + + @Override + public void addFooterView(View v) { + super.addFooterView(v); + if (mFooterViews == null) { + mFooterViews = new ArrayList(); + } + mFooterViews.add(v); + } + + @Override + public boolean removeFooterView(View v) { + if (super.removeFooterView(v)) { + mFooterViews.remove(v); + return true; + } + return false; + } + + boolean containsFooterView(View v) { + if (mFooterViews == null) { + return false; + } + return mFooterViews.contains(v); + } + + void setTopClippingLength(int topClipping) { + mTopClippingLength = topClipping; + } + + int getFixedFirstVisibleItem() { + int firstVisibleItem = getFirstVisiblePosition(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { + return firstVisibleItem; + } + + for (int i = 0; i < getChildCount(); i++) { + if (getChildAt(i).getBottom() >= 0) { + firstVisibleItem += i; + break; + } + } + + // work around to fix bug with firstVisibleItem being to high + // because list view does not take clipToPadding=false into account + // TODO + /* + * if (!mClippingToPadding && getPaddingTop() > 0) { if + * (getChildAt(0).getTop() > 0) { if (firstVisibleItem > 0) { + * firstVisibleItem -= 1; } } } + */ + return firstVisibleItem; + } + +} diff --git a/sample/res/layout/fragment_test.xml b/sample/res/layout/fragment_test.xml index 641ec316..2f5a6f6e 100644 --- a/sample/res/layout/fragment_test.xml +++ b/sample/res/layout/fragment_test.xml @@ -1,20 +1,16 @@ - + android:layout_height="match_parent"> + android:drawSelectorOnTop="true" /> + android:visibility="gone" /> - \ No newline at end of file + \ No newline at end of file diff --git a/sample/res/values/colors.xml b/sample/res/values/colors.xml index e758a4bc..eeb90732 100644 --- a/sample/res/values/colors.xml +++ b/sample/res/values/colors.xml @@ -1,6 +1,6 @@ - #e74c3c - #c0392b + #aae74c3c + #aac0392b \ No newline at end of file diff --git a/sample/src/com/emilsjolander/components/stickylistheaders/test/TestFragment.java b/sample/src/com/emilsjolander/components/stickylistheaders/test/TestFragment.java index b111bc80..2f653c93 100644 --- a/sample/src/com/emilsjolander/components/stickylistheaders/test/TestFragment.java +++ b/sample/src/com/emilsjolander/components/stickylistheaders/test/TestFragment.java @@ -1,8 +1,6 @@ package com.emilsjolander.components.stickylistheaders.test; import static android.widget.Toast.LENGTH_SHORT; -import android.annotation.SuppressLint; -import android.os.Build; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; @@ -30,10 +28,14 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, mStickyList.addHeaderView(inflater.inflate(R.layout.list_header, null)); mStickyList.addFooterView(inflater.inflate(R.layout.list_footer, null)); - mAdapter = new TestBaseAdapter(getActivity()); mStickyList.setEmptyView(v.findViewById(R.id.empty)); + mStickyList.setDrawingListUnderStickyHeader(true); + mStickyList.setAreHeadersSticky(true); + + mAdapter = new TestBaseAdapter(getActivity()); mStickyList.setAdapter(mAdapter); + return v; } @@ -44,18 +46,11 @@ public void onItemClick(AdapterView parent, View view, int position, LENGTH_SHORT).show(); } - @SuppressLint("NewApi") @Override public void onHeaderClick(StickyListHeadersListView l, View header, int itemPosition, long headerId, boolean currentlySticky) { - Toast.makeText(getActivity(), "header " + headerId, Toast.LENGTH_SHORT) - .show(); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { - mStickyList.smoothScrollToPositionFromTop( - mAdapter.getSectionStart(itemPosition) - + mStickyList.getHeaderViewsCount(), - -mStickyList.getPaddingTop()); - } + Toast.makeText(getActivity(), "Header " + headerId + " currentlySticky ?"+currentlySticky, + LENGTH_SHORT).show(); } } From a35b49a491c526b09067004ac1d5cb6680a35819 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Sat, 14 Sep 2013 17:59:47 +0200 Subject: [PATCH 06/90] added a ton of delegate methods --- .../stickylistheaders/AdapterWrapper.java | 6 +- .../ApiLevelTooLowException.java | 14 ++ .../StickyListHeadersListView.java | 149 ++++++++++++++++++ .../stickylistheaders/WrapperViewList.java | 5 - 4 files changed, 165 insertions(+), 9 deletions(-) create mode 100644 library/src/com/emilsjolander/components/stickylistheaders/ApiLevelTooLowException.java diff --git a/library/src/com/emilsjolander/components/stickylistheaders/AdapterWrapper.java b/library/src/com/emilsjolander/components/stickylistheaders/AdapterWrapper.java index 7c4e3543..5d76bcd4 100644 --- a/library/src/com/emilsjolander/components/stickylistheaders/AdapterWrapper.java +++ b/library/src/com/emilsjolander/components/stickylistheaders/AdapterWrapper.java @@ -56,12 +56,10 @@ public void onChanged() { delegate.registerDataSetObserver(mDataSetObserver); } - void setDivider(Drawable divider) { + void setDivider(Drawable divider, int dividerHeight) { this.mDivider = divider; - } - - void setDividerHeight(int dividerHeight) { this.mDividerHeight = dividerHeight; + notifyDataSetChanged(); } @Override diff --git a/library/src/com/emilsjolander/components/stickylistheaders/ApiLevelTooLowException.java b/library/src/com/emilsjolander/components/stickylistheaders/ApiLevelTooLowException.java new file mode 100644 index 00000000..d47e171c --- /dev/null +++ b/library/src/com/emilsjolander/components/stickylistheaders/ApiLevelTooLowException.java @@ -0,0 +1,14 @@ +package com.emilsjolander.components.stickylistheaders; + +public class ApiLevelTooLowException extends RuntimeException { + + public ApiLevelTooLowException(String string) { + super(string); + } + + /** + * + */ + private static final long serialVersionUID = -5480068364264456757L; + +} diff --git a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java index 67b20fd6..5822918b 100644 --- a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java @@ -4,8 +4,10 @@ import android.content.Context; import android.database.DataSetObserver; import android.graphics.Canvas; +import android.graphics.drawable.Drawable; import android.os.Build; import android.util.AttributeSet; +import android.util.SparseBooleanArray; import android.view.View; import android.widget.AbsListView; import android.widget.AbsListView.OnScrollListener; @@ -51,6 +53,8 @@ public void onHeaderClick(StickyListHeadersListView l, View header, /* --- Other --- */ private AdapterWrapper mAdapter; private OnHeaderClickListener mOnHeaderClickListener; + private Drawable mDivider; + private int mDividerHeight; public StickyListHeadersListView(Context context) { this(context, null); @@ -66,9 +70,19 @@ public StickyListHeadersListView(Context context, AttributeSet attrs, // Initialize the list mList = new WrapperViewList(context); + mDivider = mList.getDivider(); + mDividerHeight = mList.getDividerHeight(); + + // null out divider, dividers are handled by adapter so they look good + // with headers + mList.setDivider(null); + mList.setDividerHeight(0); + mList.setLifeCycleListener(new WrapperViewListLifeCycleListener()); mList.setOnScrollListener(new WrapperListScrollListener()); addView(mList); + + // TODO do shit with xml attributes } @Override @@ -340,6 +354,12 @@ public void setOnHeaderClickListener( /* ---------- ListView delegate methods ---------- */ public void setAdapter(StickyListHeadersAdapter adapter) { + if (adapter == null) { + mList.setAdapter(null); + clearHeader(); + return; + } + mAdapter = new AdapterWrapper(getContext(), adapter); mAdapter.registerDataSetObserver(new AdapterWrapperDataSetObserver()); @@ -349,6 +369,8 @@ public void setAdapter(StickyListHeadersAdapter adapter) { mAdapter.setOnHeaderClickListener(null); } + mAdapter.setDivider(mDivider, mDividerHeight); + mList.setAdapter(mAdapter); clearHeader(); } @@ -357,6 +379,28 @@ public StickyListHeadersAdapter getAdapter() { return mAdapter == null ? null : mAdapter.mDelegate; } + public void setDivider(Drawable divider) { + mDivider = divider; + if (mAdapter != null) { + mAdapter.setDivider(mDivider, mDividerHeight); + } + } + + public void setDividerHeight(int dividerHeight) { + mDividerHeight = dividerHeight; + if (mAdapter != null) { + mAdapter.setDivider(mDivider, mDividerHeight); + } + } + + public Drawable getDivider() { + return mDivider; + } + + public int getDividerHeight() { + return mDividerHeight; + } + public void setOnScrollListener(OnScrollListener onScrollListener) { mOnScrollListenerDelegate = onScrollListener; } @@ -397,4 +441,109 @@ public View setEmptyView() { return mList.getEmptyView(); } + public void smoothScrollBy(int distance, int duration) { + mList.smoothScrollBy(distance, duration); + } + + @SuppressLint("NewApi") + public void smoothScrollByOffset(int offset) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { + throw new ApiLevelTooLowException("requires api lvl 11"); + } + mList.smoothScrollByOffset(offset); + } + + public void smoothScrollToPosition(int position) { + mList.smoothScrollToPosition(position); + } + + public void smoothScrollToPosition(int position, int boundPosition) { + mList.smoothScrollToPosition(position, boundPosition); + } + + @SuppressLint("NewApi") + public void smoothScrollToPositionFromTop(int position, int offset) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { + throw new ApiLevelTooLowException("requires api lvl 11"); + } + mList.smoothScrollToPositionFromTop(position, offset); + } + + @SuppressLint("NewApi") + public void smoothScrollToPositionFromTop(int position, int offset, + int duration) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { + throw new ApiLevelTooLowException("requires api lvl 11"); + } + mList.smoothScrollToPositionFromTop(position, offset, duration); + } + + public void setSelection(int position) { + mList.setSelection(position); + } + + public void setSelectionAfterHeaderView() { + mList.setSelectionAfterHeaderView(); + } + + public void setSelectionFromTop(int position, int y) { + mList.setSelectionFromTop(position, y); + } + + public void setSelector(Drawable sel) { + mList.setSelector(sel); + } + + public void setSelector(int resID) { + mList.setSelector(resID); + } + + public int getFirstVisiblePosition() { + return mList.getFirstVisiblePosition(); + } + + public int getLastVisiblePosition() { + return mList.getLastVisiblePosition(); + } + + public void setChoiceMode(int choiceMode) { + mList.setChoiceMode(choiceMode); + } + + public void setItemChecked(int position, boolean value) { + mList.setItemChecked(position, value); + } + + @SuppressLint("NewApi") + public int getCheckedItemCount() { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { + throw new ApiLevelTooLowException("requires api lvl 11"); + } + return mList.getCheckedItemCount(); + } + + public long[] getCheckedItemIds() { + return mList.getCheckedItemIds(); + } + + public int getCheckedItemPosition() { + return mList.getCheckedItemPosition(); + } + + public SparseBooleanArray getCheckedItemPositions() { + return mList.getCheckedItemPositions(); + } + + public int getCount() { + return mList.getCount(); + } + + public Object getItemAtPosition(int position) { + return mList.getItemAtPosition(position); + } + + public long getItemIdAtPosition(int position) { + return mList.getItemIdAtPosition(position); + } + } diff --git a/library/src/com/emilsjolander/components/stickylistheaders/WrapperViewList.java b/library/src/com/emilsjolander/components/stickylistheaders/WrapperViewList.java index 6c6f67b8..693879c8 100644 --- a/library/src/com/emilsjolander/components/stickylistheaders/WrapperViewList.java +++ b/library/src/com/emilsjolander/components/stickylistheaders/WrapperViewList.java @@ -27,11 +27,6 @@ interface LifeCycleListener { public WrapperViewList(Context context) { super(context); - // null out divider, dividers are handled by adapter so they look good - // with headers - super.setDivider(null); - super.setDividerHeight(0); - // Use reflection to be able to change the size/position of the list // selector so it does not come under/over the header try { From 82143d7dc69f2686a00cdaf97082a86751ffbfdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Sat, 14 Sep 2013 20:12:05 +0200 Subject: [PATCH 07/90] fix smooth scrolling to a position --- .../StickyListHeadersListView.java | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java index 5822918b..47834487 100644 --- a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java @@ -303,6 +303,27 @@ public void onHeaderClick(View header, int itemPosition, long headerId) { } + private boolean isStartOfSection(int position) { + return position == 0 + || mAdapter.getHeaderId(position) == mAdapter + .getHeaderId(position - 1); + } + + private int getHeaderOverlap(int position) { + boolean isStartOfSection = isStartOfSection(position); + if (!isStartOfSection) { + View header = mAdapter.getView(position, null, mList); + + int widthMeasureSpec = MeasureSpec.makeMeasureSpec(0, + MeasureSpec.UNSPECIFIED); + int heightMeasureSpec = MeasureSpec.makeMeasureSpec(0, + MeasureSpec.UNSPECIFIED); + header.measure(widthMeasureSpec, heightMeasureSpec); + return header.getMeasuredHeight(); + } + return 0; + } + /* ---------- StickyListHeaders specific API ---------- */ public void setAreHeadersSticky(boolean areHeadersSticky) { @@ -453,8 +474,14 @@ public void smoothScrollByOffset(int offset) { mList.smoothScrollByOffset(offset); } + @SuppressLint("NewApi") public void smoothScrollToPosition(int position) { - mList.smoothScrollToPosition(position); + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { + mList.smoothScrollToPosition(position); + } else { + int offset = mAdapter == null ? 0 : getHeaderOverlap(position); + mList.smoothScrollToPositionFromTop(position, offset); + } } public void smoothScrollToPosition(int position, int boundPosition) { @@ -466,6 +493,7 @@ public void smoothScrollToPositionFromTop(int position, int offset) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { throw new ApiLevelTooLowException("requires api lvl 11"); } + offset += mAdapter == null ? 0 : getHeaderOverlap(position); mList.smoothScrollToPositionFromTop(position, offset); } @@ -475,6 +503,7 @@ public void smoothScrollToPositionFromTop(int position, int offset, if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { throw new ApiLevelTooLowException("requires api lvl 11"); } + offset += mAdapter == null ? 0 : getHeaderOverlap(position); mList.smoothScrollToPositionFromTop(position, offset, duration); } From c055f81deb424b98eef47b85a8654fe38086188f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Sat, 14 Sep 2013 20:30:45 +0200 Subject: [PATCH 08/90] measure header and make use of the measured height to get instant height change feedback --- .../StickyListHeadersListView.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java index 47834487..2b7b569e 100644 --- a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java @@ -145,6 +145,9 @@ private void updateHeader(int firstVisiblePosition) { swapHeader(header); } + // measure the header + measureChild(mHeader, 0, 0); + // Reset mHeaderOffset to null ensuring // that it will be set on the header and // not skipped for performance reasons. @@ -157,22 +160,23 @@ private void updateHeader(int firstVisiblePosition) { // Calculate new header offset // Skip looking at the first view. it never matters because it always // results in a headerOffset = 0 + int headerBottom = mHeader.getMeasuredHeight() + mHeader.getTop(); for (int i = 1; i < mList.getChildCount(); i++) { final View child = mList.getChildAt(i); final boolean doesChildHaveHeader = child instanceof WrapperView && ((WrapperView) child).hasHeader(); final boolean isChildFooter = mList.containsFooterView(child); if (doesChildHaveHeader || isChildFooter) { - headerOffset = Math - .min(child.getTop() - mHeader.getBottom(), 0); + headerOffset = Math.min( + child.getTop() - headerBottom , 0); break; } } - + setHeaderOffet(headerOffset); if (!mIsDrawingListUnderStickyHeader) { - mList.setTopClippingLength(mHeader.getHeight() + mHeaderOffset); + mList.setTopClippingLength(mHeader.getMeasuredHeight() + mHeaderOffset); } updateHeaderVisibilities(); @@ -201,7 +205,7 @@ public void onClick(View v) { private void updateHeaderVisibilities() { int top; if (mHeader != null) { - top = mHeader.getHeight() + top = mHeader.getMeasuredHeight() + (mHeaderOffset != null ? mHeaderOffset : 0); } else { top = mClippingToPadding ? getPaddingTop() : 0; From ff5b443e38a5dcd764d6d7235aff4895d9d00188 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Sun, 15 Sep 2013 00:02:00 +0200 Subject: [PATCH 09/90] added support for many xml attributes. - Padding does not work properly - The first header flashes once when sticking --- library/res/values/attrs.xml | 28 ++++ .../StickyListHeadersListView.java | 140 ++++++++++++++++-- sample/res/layout/fragment_test.xml | 4 +- 3 files changed, 156 insertions(+), 16 deletions(-) create mode 100644 library/res/values/attrs.xml diff --git a/library/res/values/attrs.xml b/library/res/values/attrs.xml new file mode 100644 index 00000000..d709f8a5 --- /dev/null +++ b/library/res/values/attrs.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java index 2b7b569e..ffbf7af7 100644 --- a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java @@ -2,6 +2,7 @@ import android.annotation.SuppressLint; import android.content.Context; +import android.content.res.TypedArray; import android.database.DataSetObserver; import android.graphics.Canvas; import android.graphics.drawable.Drawable; @@ -49,6 +50,10 @@ public void onHeaderClick(StickyListHeadersListView l, View header, private boolean mAreHeadersSticky = true; private boolean mClippingToPadding = true; private boolean mIsDrawingListUnderStickyHeader = true; + private int mPaddingLeft = 0; + private int mPaddingTop = 0; + private int mPaddingRight = 0; + private int mPaddingBottom = 0; /* --- Other --- */ private AdapterWrapper mAdapter; @@ -82,7 +87,55 @@ public StickyListHeadersListView(Context context, AttributeSet attrs, mList.setOnScrollListener(new WrapperListScrollListener()); addView(mList); - // TODO do shit with xml attributes + if (attrs != null) { + TypedArray a = context.getTheme().obtainStyledAttributes(attrs, + R.styleable.StickyListHeadersListView, 0, 0); + + try { + // Android attributes + if (a.hasValue(R.styleable.StickyListHeadersListView_android_padding)) { + int padding = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_padding, 0); + mPaddingLeft = padding; + mPaddingTop = padding; + mPaddingRight = padding; + mPaddingBottom = padding; + } else { + mPaddingLeft = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_paddingLeft, 0); + mPaddingTop = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_paddingTop, 0); + mPaddingRight = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_paddingRight, 0); + mPaddingBottom = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_paddingBottom, 0); + } + setPadding(mPaddingLeft, mPaddingTop, mPaddingRight, mPaddingBottom); + + // Set clip to padding on the list and reset value to default on wrapper + mClippingToPadding = a.getBoolean(R.styleable.StickyListHeadersListView_android_clipToPadding, true); + super.setClipToPadding(true); + mList.setClipToPadding(mClippingToPadding); + + // ListView attributes + mList.setCacheColorHint(a.getColor(R.styleable.StickyListHeadersListView_android_cacheColorHint, mList.getCacheColorHint())); + mList.setChoiceMode(a.getInt(R.styleable.StickyListHeadersListView_android_choiceMode, mList.getChoiceMode())); + mList.setDrawSelectorOnTop(a.getBoolean(R.styleable.StickyListHeadersListView_android_drawSelectorOnTop, false)); + mList.setFastScrollEnabled(a.getBoolean(R.styleable.StickyListHeadersListView_android_fastScrollEnabled, mList.isFastScrollEnabled())); + final Drawable selector = a.getDrawable(R.styleable.StickyListHeadersListView_android_listSelector); + if (selector != null) { + mList.setSelector(selector); + } + mList.setScrollingCacheEnabled(a.getBoolean(R.styleable.StickyListHeadersListView_android_scrollingCache, mList.isScrollingCacheEnabled())); + final Drawable divider = a.getDrawable(R.styleable.StickyListHeadersListView_android_divider); + if (divider != null) { + mDivider = divider; + } + mDividerHeight = a.getInt(R.styleable.StickyListHeadersListView_android_dividerHeight, mDividerHeight); + + // StickyListHeaders attributes + mAreHeadersSticky = a.getBoolean(R.styleable.StickyListHeadersListView_hasStickyHeaders, true); + mIsDrawingListUnderStickyHeader = a.getBoolean(R.styleable.StickyListHeadersListView_isDrawingListUnderStickyHeader, true); + + } finally { + a.recycle(); + } + } } @Override @@ -98,7 +151,14 @@ protected void dispatchDraw(Canvas canvas) { // This is called in response to the data set or the adapter changing private void clearHeader() { if (mHeader != null) { - removeView(mHeader); + final View oldHeader = mHeader; + post(new Runnable() { + + @Override + public void run() { + removeView(oldHeader); + } + }); mHeader = null; mHeaderId = null; mHeaderPosition = null; @@ -146,7 +206,10 @@ private void updateHeader(int firstVisiblePosition) { } // measure the header - measureChild(mHeader, 0, 0); + final int width = getWidth()-mPaddingLeft-mPaddingRight; + final int parentWidthMeasureSpec = MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY); + final int parentHeightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); + measureChild(mHeader, parentWidthMeasureSpec, parentHeightMeasureSpec); // Reset mHeaderOffset to null ensuring // that it will be set on the header and @@ -160,35 +223,42 @@ private void updateHeader(int firstVisiblePosition) { // Calculate new header offset // Skip looking at the first view. it never matters because it always // results in a headerOffset = 0 - int headerBottom = mHeader.getMeasuredHeight() + mHeader.getTop(); + int headerBottom = mHeader.getMeasuredHeight() + (mClippingToPadding ? mPaddingTop : 0); for (int i = 1; i < mList.getChildCount(); i++) { final View child = mList.getChildAt(i); final boolean doesChildHaveHeader = child instanceof WrapperView && ((WrapperView) child).hasHeader(); final boolean isChildFooter = mList.containsFooterView(child); if (doesChildHaveHeader || isChildFooter) { - headerOffset = Math.min( - child.getTop() - headerBottom , 0); + headerOffset = Math.min(child.getTop() - headerBottom, 0); break; } } - + + headerOffset += mClippingToPadding ? mPaddingTop : 0; setHeaderOffet(headerOffset); if (!mIsDrawingListUnderStickyHeader) { - mList.setTopClippingLength(mHeader.getMeasuredHeight() + mHeaderOffset); + mList.setTopClippingLength(mHeader.getMeasuredHeight() + + mHeaderOffset); } updateHeaderVisibilities(); } private void swapHeader(View newHeader) { - if (mHeader != null) { - removeView(mHeader); - } + final View oldHeader = mHeader; + post(new Runnable() { + + @Override + public void run() { + if (oldHeader != null) { + removeView(oldHeader); + } + addView(mHeader); + } + }); mHeader = newHeader; - addView(mHeader); - mHeader.setOnClickListener(new OnClickListener() { @Override @@ -208,7 +278,7 @@ private void updateHeaderVisibilities() { top = mHeader.getMeasuredHeight() + (mHeaderOffset != null ? mHeaderOffset : 0); } else { - top = mClippingToPadding ? getPaddingTop() : 0; + top = mClippingToPadding ? mPaddingTop : 0; } int childCount = mList.getChildCount(); for (int i = 0; i < childCount; i++) { @@ -289,7 +359,14 @@ private class WrapperViewListLifeCycleListener implements LifeCycleListener { @Override public void onDispatchDrawOccurred(Canvas canvas) { if (mHeader != null) { - drawChild(canvas, mHeader, 0); + if (mClippingToPadding) { + canvas.save(); + canvas.clipRect(0, mPaddingTop, getRight(), getBottom()); + drawChild(canvas, mHeader, 0); + canvas.restore(); + } else { + drawChild(canvas, mHeader, 0); + } } } @@ -578,5 +655,38 @@ public Object getItemAtPosition(int position) { public long getItemIdAtPosition(int position) { return mList.getItemIdAtPosition(position); } + + @Override + public void setPadding(int left, int top, int right, int bottom) { + mPaddingLeft = left; + mPaddingTop = top; + mPaddingRight = right; + mPaddingBottom = bottom; + + // Set left/right paddings on the wrapper and top/bottom on the + // list to support the clip to padding flag + super.setPadding(left, 0, right, 0); + mList.setPadding(0, top, 0, bottom); + } + + @Override + public int getPaddingLeft() { + return mPaddingLeft; + } + + @Override + public int getPaddingTop() { + return mPaddingTop; + } + + @Override + public int getPaddingRight() { + return mPaddingRight; + } + + @Override + public int getPaddingBottom() { + return mPaddingBottom; + } } diff --git a/sample/res/layout/fragment_test.xml b/sample/res/layout/fragment_test.xml index 2f5a6f6e..2955639c 100644 --- a/sample/res/layout/fragment_test.xml +++ b/sample/res/layout/fragment_test.xml @@ -8,11 +8,13 @@ android:id="@+id/list" android:layout_width="match_parent" android:layout_height="match_parent" + android:padding="16dp" + android:clipToPadding="false" android:scrollbarStyle="outsideOverlay" android:fastScrollEnabled="true" android:drawSelectorOnTop="true" /> - Date: Sun, 15 Sep 2013 01:08:49 +0200 Subject: [PATCH 10/90] fixed header layout issue causing it to receive double padding --- .../StickyListHeadersListView.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java index ffbf7af7..39b3f738 100644 --- a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java @@ -137,6 +137,19 @@ public StickyListHeadersListView(Context context, AttributeSet attrs, } } } + + @Override + protected void onLayout(boolean changed, int left, int top, int right, + int bottom) { + mList.layout(mPaddingLeft, 0, mList.getMeasuredWidth()+mPaddingLeft, getHeight()); + if (mHeader != null) { + MarginLayoutParams lp = (MarginLayoutParams) mHeader.getLayoutParams(); + int headerTop = lp.topMargin + (mClippingToPadding ? mPaddingTop : 0); + // The left parameter must for some reason be set to 0. + // I think it should be set to mPaddingLeft but apparently not + mHeader.layout(0, headerTop, mHeader.getMeasuredWidth(), headerTop+mHeader.getMeasuredHeight()); + } + } @Override protected void dispatchDraw(Canvas canvas) { From 322154b6ba125726b1097fe6fe420785fdec582c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Sun, 15 Sep 2013 01:15:10 +0200 Subject: [PATCH 11/90] remove delay of adding/removing views to fix flicker on first sticky header --- .../StickyListHeadersListView.java | 24 ++++--------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java index 39b3f738..41fb3e44 100644 --- a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java @@ -164,14 +164,7 @@ protected void dispatchDraw(Canvas canvas) { // This is called in response to the data set or the adapter changing private void clearHeader() { if (mHeader != null) { - final View oldHeader = mHeader; - post(new Runnable() { - - @Override - public void run() { - removeView(oldHeader); - } - }); + removeView(mHeader); mHeader = null; mHeaderId = null; mHeaderPosition = null; @@ -260,18 +253,11 @@ private void updateHeader(int firstVisiblePosition) { } private void swapHeader(View newHeader) { - final View oldHeader = mHeader; - post(new Runnable() { - - @Override - public void run() { - if (oldHeader != null) { - removeView(oldHeader); - } - addView(mHeader); - } - }); + if (mHeader != null) { + removeView(mHeader); + } mHeader = newHeader; + addView(mHeader); mHeader.setOnClickListener(new OnClickListener() { @Override From 9d35e8994691b7f4b345e0980ade06316122ee58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Sun, 15 Sep 2013 01:18:45 +0200 Subject: [PATCH 12/90] fix header measure issue --- .../stickylistheaders/StickyListHeadersListView.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java index 41fb3e44..e6d78336 100644 --- a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java @@ -212,7 +212,7 @@ private void updateHeader(int firstVisiblePosition) { } // measure the header - final int width = getWidth()-mPaddingLeft-mPaddingRight; + final int width = getWidth(); final int parentWidthMeasureSpec = MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY); final int parentHeightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); measureChild(mHeader, parentWidthMeasureSpec, parentHeightMeasureSpec); @@ -394,11 +394,10 @@ private int getHeaderOverlap(int position) { if (!isStartOfSection) { View header = mAdapter.getView(position, null, mList); - int widthMeasureSpec = MeasureSpec.makeMeasureSpec(0, - MeasureSpec.UNSPECIFIED); - int heightMeasureSpec = MeasureSpec.makeMeasureSpec(0, - MeasureSpec.UNSPECIFIED); - header.measure(widthMeasureSpec, heightMeasureSpec); + final int width = getWidth(); + final int parentWidthMeasureSpec = MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY); + final int parentHeightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); + measureChild(header, parentWidthMeasureSpec, parentHeightMeasureSpec); return header.getMeasuredHeight(); } return 0; From 85db79a335d5d3992dcba9e38a45039e3b5d7e06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Sun, 15 Sep 2013 01:38:33 +0200 Subject: [PATCH 13/90] fixed issue where header would not respect initial padding when clipToPadding was false --- .../StickyListHeadersListView.java | 152 +++++++++++++----- .../stickylistheaders/test/TestFragment.java | 4 +- 2 files changed, 111 insertions(+), 45 deletions(-) diff --git a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java index e6d78336..5e42e7a5 100644 --- a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java @@ -94,60 +94,107 @@ public StickyListHeadersListView(Context context, AttributeSet attrs, try { // Android attributes if (a.hasValue(R.styleable.StickyListHeadersListView_android_padding)) { - int padding = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_padding, 0); + int padding = a + .getDimensionPixelSize( + R.styleable.StickyListHeadersListView_android_padding, + 0); mPaddingLeft = padding; mPaddingTop = padding; mPaddingRight = padding; mPaddingBottom = padding; } else { - mPaddingLeft = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_paddingLeft, 0); - mPaddingTop = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_paddingTop, 0); - mPaddingRight = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_paddingRight, 0); - mPaddingBottom = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_paddingBottom, 0); + mPaddingLeft = a + .getDimensionPixelSize( + R.styleable.StickyListHeadersListView_android_paddingLeft, + 0); + mPaddingTop = a + .getDimensionPixelSize( + R.styleable.StickyListHeadersListView_android_paddingTop, + 0); + mPaddingRight = a + .getDimensionPixelSize( + R.styleable.StickyListHeadersListView_android_paddingRight, + 0); + mPaddingBottom = a + .getDimensionPixelSize( + R.styleable.StickyListHeadersListView_android_paddingBottom, + 0); } - setPadding(mPaddingLeft, mPaddingTop, mPaddingRight, mPaddingBottom); - - // Set clip to padding on the list and reset value to default on wrapper - mClippingToPadding = a.getBoolean(R.styleable.StickyListHeadersListView_android_clipToPadding, true); + setPadding(mPaddingLeft, mPaddingTop, mPaddingRight, + mPaddingBottom); + + // Set clip to padding on the list and reset value to default on + // wrapper + mClippingToPadding = a + .getBoolean( + R.styleable.StickyListHeadersListView_android_clipToPadding, + true); super.setClipToPadding(true); mList.setClipToPadding(mClippingToPadding); - + // ListView attributes - mList.setCacheColorHint(a.getColor(R.styleable.StickyListHeadersListView_android_cacheColorHint, mList.getCacheColorHint())); - mList.setChoiceMode(a.getInt(R.styleable.StickyListHeadersListView_android_choiceMode, mList.getChoiceMode())); - mList.setDrawSelectorOnTop(a.getBoolean(R.styleable.StickyListHeadersListView_android_drawSelectorOnTop, false)); - mList.setFastScrollEnabled(a.getBoolean(R.styleable.StickyListHeadersListView_android_fastScrollEnabled, mList.isFastScrollEnabled())); - final Drawable selector = a.getDrawable(R.styleable.StickyListHeadersListView_android_listSelector); + mList.setCacheColorHint(a + .getColor( + R.styleable.StickyListHeadersListView_android_cacheColorHint, + mList.getCacheColorHint())); + mList.setChoiceMode(a + .getInt(R.styleable.StickyListHeadersListView_android_choiceMode, + mList.getChoiceMode())); + mList.setDrawSelectorOnTop(a + .getBoolean( + R.styleable.StickyListHeadersListView_android_drawSelectorOnTop, + false)); + mList.setFastScrollEnabled(a + .getBoolean( + R.styleable.StickyListHeadersListView_android_fastScrollEnabled, + mList.isFastScrollEnabled())); + final Drawable selector = a + .getDrawable(R.styleable.StickyListHeadersListView_android_listSelector); if (selector != null) { mList.setSelector(selector); } - mList.setScrollingCacheEnabled(a.getBoolean(R.styleable.StickyListHeadersListView_android_scrollingCache, mList.isScrollingCacheEnabled())); - final Drawable divider = a.getDrawable(R.styleable.StickyListHeadersListView_android_divider); + mList.setScrollingCacheEnabled(a + .getBoolean( + R.styleable.StickyListHeadersListView_android_scrollingCache, + mList.isScrollingCacheEnabled())); + final Drawable divider = a + .getDrawable(R.styleable.StickyListHeadersListView_android_divider); if (divider != null) { mDivider = divider; } - mDividerHeight = a.getInt(R.styleable.StickyListHeadersListView_android_dividerHeight, mDividerHeight); - + mDividerHeight = a + .getInt(R.styleable.StickyListHeadersListView_android_dividerHeight, + mDividerHeight); + // StickyListHeaders attributes - mAreHeadersSticky = a.getBoolean(R.styleable.StickyListHeadersListView_hasStickyHeaders, true); - mIsDrawingListUnderStickyHeader = a.getBoolean(R.styleable.StickyListHeadersListView_isDrawingListUnderStickyHeader, true); - + mAreHeadersSticky = a.getBoolean( + R.styleable.StickyListHeadersListView_hasStickyHeaders, + true); + mIsDrawingListUnderStickyHeader = a + .getBoolean( + R.styleable.StickyListHeadersListView_isDrawingListUnderStickyHeader, + true); + } finally { a.recycle(); } } } - + @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { - mList.layout(mPaddingLeft, 0, mList.getMeasuredWidth()+mPaddingLeft, getHeight()); + mList.layout(mPaddingLeft, 0, mList.getMeasuredWidth() + mPaddingLeft, + getHeight()); if (mHeader != null) { - MarginLayoutParams lp = (MarginLayoutParams) mHeader.getLayoutParams(); - int headerTop = lp.topMargin + (mClippingToPadding ? mPaddingTop : 0); + MarginLayoutParams lp = (MarginLayoutParams) mHeader + .getLayoutParams(); + int headerTop = lp.topMargin + + (mClippingToPadding ? mPaddingTop : 0); // The left parameter must for some reason be set to 0. // I think it should be set to mPaddingLeft but apparently not - mHeader.layout(0, headerTop, mHeader.getMeasuredWidth(), headerTop+mHeader.getMeasuredHeight()); + mHeader.layout(0, headerTop, mHeader.getMeasuredWidth(), headerTop + + mHeader.getMeasuredHeight()); } } @@ -177,7 +224,7 @@ private void clearHeader() { } private void updateOrClearHeader(int firstVisiblePosition) { - int adapterCount = mAdapter == null ? 0 : mAdapter.getCount(); + final int adapterCount = mAdapter == null ? 0 : mAdapter.getCount(); if (adapterCount == 0 || !mAreHeadersSticky) { return; } @@ -185,8 +232,12 @@ private void updateOrClearHeader(int firstVisiblePosition) { final int headerViewCount = mList.getHeaderViewsCount(); final int realFirstVisibleItem = firstVisiblePosition - headerViewCount; - if (mList.getChildCount() == 0 || realFirstVisibleItem < 0 - || realFirstVisibleItem > adapterCount - 1) { + final boolean isFirstViewBelowTop = mList.getChildAt(0).getTop() > 0; + final boolean isFirstVisibleItemOutsideAdapterRange = realFirstVisibleItem > adapterCount - 1 + || realFirstVisibleItem < 0; + final boolean doesListHaveChildren = mList.getChildCount() != 0; + if (!doesListHaveChildren || isFirstVisibleItemOutsideAdapterRange + || isFirstViewBelowTop) { clearHeader(); return; } @@ -213,9 +264,12 @@ private void updateHeader(int firstVisiblePosition) { // measure the header final int width = getWidth(); - final int parentWidthMeasureSpec = MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY); - final int parentHeightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); - measureChild(mHeader, parentWidthMeasureSpec, parentHeightMeasureSpec); + final int parentWidthMeasureSpec = MeasureSpec.makeMeasureSpec( + width, MeasureSpec.EXACTLY); + final int parentHeightMeasureSpec = MeasureSpec + .makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); + measureChild(mHeader, parentWidthMeasureSpec, + parentHeightMeasureSpec); // Reset mHeaderOffset to null ensuring // that it will be set on the header and @@ -229,7 +283,8 @@ private void updateHeader(int firstVisiblePosition) { // Calculate new header offset // Skip looking at the first view. it never matters because it always // results in a headerOffset = 0 - int headerBottom = mHeader.getMeasuredHeight() + (mClippingToPadding ? mPaddingTop : 0); + int headerBottom = mHeader.getMeasuredHeight() + + (mClippingToPadding ? mPaddingTop : 0); for (int i = 1; i < mList.getChildCount(); i++) { final View child = mList.getChildAt(i); final boolean doesChildHaveHeader = child instanceof WrapperView @@ -364,7 +419,7 @@ public void onDispatchDrawOccurred(Canvas canvas) { drawChild(canvas, mHeader, 0); canvas.restore(); } else { - drawChild(canvas, mHeader, 0); + drawChild(canvas, mHeader, 0); } } } @@ -395,9 +450,12 @@ private int getHeaderOverlap(int position) { View header = mAdapter.getView(position, null, mList); final int width = getWidth(); - final int parentWidthMeasureSpec = MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY); - final int parentHeightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); - measureChild(header, parentWidthMeasureSpec, parentHeightMeasureSpec); + final int parentWidthMeasureSpec = MeasureSpec.makeMeasureSpec( + width, MeasureSpec.EXACTLY); + final int parentHeightMeasureSpec = MeasureSpec.makeMeasureSpec(0, + MeasureSpec.UNSPECIFIED); + measureChild(header, parentWidthMeasureSpec, + parentHeightMeasureSpec); return header.getMeasuredHeight(); } return 0; @@ -451,6 +509,14 @@ public void setOnHeaderClickListener( } } + public View getListChildAt(int index) { + return mList.getChildAt(index); + } + + public int getListChildCount() { + return mList.getChildCount(); + } + /* ---------- ListView delegate methods ---------- */ public void setAdapter(StickyListHeadersAdapter adapter) { @@ -653,7 +719,7 @@ public Object getItemAtPosition(int position) { public long getItemIdAtPosition(int position) { return mList.getItemIdAtPosition(position); } - + @Override public void setPadding(int left, int top, int right, int bottom) { mPaddingLeft = left; @@ -666,22 +732,22 @@ public void setPadding(int left, int top, int right, int bottom) { super.setPadding(left, 0, right, 0); mList.setPadding(0, top, 0, bottom); } - + @Override public int getPaddingLeft() { return mPaddingLeft; } - + @Override public int getPaddingTop() { return mPaddingTop; } - + @Override public int getPaddingRight() { return mPaddingRight; } - + @Override public int getPaddingBottom() { return mPaddingBottom; diff --git a/sample/src/com/emilsjolander/components/stickylistheaders/test/TestFragment.java b/sample/src/com/emilsjolander/components/stickylistheaders/test/TestFragment.java index 2f653c93..354b73ac 100644 --- a/sample/src/com/emilsjolander/components/stickylistheaders/test/TestFragment.java +++ b/sample/src/com/emilsjolander/components/stickylistheaders/test/TestFragment.java @@ -26,8 +26,8 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, mStickyList.setOnItemClickListener(this); mStickyList.setOnHeaderClickListener(this); - mStickyList.addHeaderView(inflater.inflate(R.layout.list_header, null)); - mStickyList.addFooterView(inflater.inflate(R.layout.list_footer, null)); +// mStickyList.addHeaderView(inflater.inflate(R.layout.list_header, null)); +// mStickyList.addFooterView(inflater.inflate(R.layout.list_footer, null)); mStickyList.setEmptyView(v.findViewById(R.id.empty)); mStickyList.setDrawingListUnderStickyHeader(true); From f4c895cea3fb3b379e8ebdc5d3eb70cc43ae4434 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Sun, 15 Sep 2013 14:05:18 +0200 Subject: [PATCH 14/90] added support for android 2.3 --- library/res/values/attrs.xml | 3 + .../StickyListHeadersListView.java | 221 ++++++++---------- .../stickylistheaders/WrapperViewList.java | 28 ++- sample/res/layout/fragment_test.xml | 1 - .../stickylistheaders/test/TestFragment.java | 4 +- 5 files changed, 115 insertions(+), 142 deletions(-) diff --git a/library/res/values/attrs.xml b/library/res/values/attrs.xml index d709f8a5..c56a282d 100644 --- a/library/res/values/attrs.xml +++ b/library/res/values/attrs.xml @@ -11,12 +11,15 @@ + + + diff --git a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java index 5e42e7a5..a39d8197 100644 --- a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java @@ -29,8 +29,8 @@ public class StickyListHeadersListView extends FrameLayout { public interface OnHeaderClickListener { - public void onHeaderClick(StickyListHeadersListView l, View header, - int itemPosition, long headerId, boolean currentlySticky); + public void onHeaderClick(StickyListHeadersListView l, View header, int itemPosition, long headerId, + boolean currentlySticky); } /* --- Children --- */ @@ -69,8 +69,7 @@ public StickyListHeadersListView(Context context, AttributeSet attrs) { this(context, attrs, 0); } - public StickyListHeadersListView(Context context, AttributeSet attrs, - int defStyle) { + public StickyListHeadersListView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // Initialize the list @@ -88,92 +87,74 @@ public StickyListHeadersListView(Context context, AttributeSet attrs, addView(mList); if (attrs != null) { - TypedArray a = context.getTheme().obtainStyledAttributes(attrs, - R.styleable.StickyListHeadersListView, 0, 0); + TypedArray a = context.getTheme() + .obtainStyledAttributes(attrs, R.styleable.StickyListHeadersListView, 0, 0); try { // Android attributes if (a.hasValue(R.styleable.StickyListHeadersListView_android_padding)) { - int padding = a - .getDimensionPixelSize( - R.styleable.StickyListHeadersListView_android_padding, - 0); + int padding = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_padding, 0); mPaddingLeft = padding; mPaddingTop = padding; mPaddingRight = padding; mPaddingBottom = padding; } else { mPaddingLeft = a - .getDimensionPixelSize( - R.styleable.StickyListHeadersListView_android_paddingLeft, - 0); - mPaddingTop = a - .getDimensionPixelSize( - R.styleable.StickyListHeadersListView_android_paddingTop, - 0); - mPaddingRight = a - .getDimensionPixelSize( - R.styleable.StickyListHeadersListView_android_paddingRight, - 0); - mPaddingBottom = a - .getDimensionPixelSize( - R.styleable.StickyListHeadersListView_android_paddingBottom, - 0); + .getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_paddingLeft, 0); + mPaddingTop = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_paddingTop, 0); + mPaddingRight = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_paddingRight, + 0); + mPaddingBottom = a.getDimensionPixelSize( + R.styleable.StickyListHeadersListView_android_paddingBottom, 0); } - setPadding(mPaddingLeft, mPaddingTop, mPaddingRight, - mPaddingBottom); + setPadding(mPaddingLeft, mPaddingTop, mPaddingRight, mPaddingBottom); // Set clip to padding on the list and reset value to default on // wrapper - mClippingToPadding = a - .getBoolean( - R.styleable.StickyListHeadersListView_android_clipToPadding, - true); + mClippingToPadding = a.getBoolean(R.styleable.StickyListHeadersListView_android_clipToPadding, true); super.setClipToPadding(true); mList.setClipToPadding(mClippingToPadding); // ListView attributes - mList.setCacheColorHint(a - .getColor( - R.styleable.StickyListHeadersListView_android_cacheColorHint, - mList.getCacheColorHint())); - mList.setChoiceMode(a - .getInt(R.styleable.StickyListHeadersListView_android_choiceMode, - mList.getChoiceMode())); - mList.setDrawSelectorOnTop(a - .getBoolean( - R.styleable.StickyListHeadersListView_android_drawSelectorOnTop, - false)); - mList.setFastScrollEnabled(a - .getBoolean( - R.styleable.StickyListHeadersListView_android_fastScrollEnabled, - mList.isFastScrollEnabled())); - final Drawable selector = a - .getDrawable(R.styleable.StickyListHeadersListView_android_listSelector); + mList.setFadingEdgeLength(a.getDimensionPixelSize( + R.styleable.StickyListHeadersListView_android_fadingEdgeLength, + mList.getVerticalFadingEdgeLength())); + final int fadingEdge = a.getInt(R.styleable.StickyListHeadersListView_android_requiresFadingEdge, 0); + if (fadingEdge == 0x00001000) { + mList.setVerticalFadingEdgeEnabled(false); + mList.setHorizontalFadingEdgeEnabled(true); + } else if (fadingEdge == 0x00002000) { + mList.setVerticalFadingEdgeEnabled(true); + mList.setHorizontalFadingEdgeEnabled(false); + } else { + mList.setVerticalFadingEdgeEnabled(false); + mList.setHorizontalFadingEdgeEnabled(false); + } + mList.setCacheColorHint(a.getColor(R.styleable.StickyListHeadersListView_android_cacheColorHint, + mList.getCacheColorHint())); + mList.setChoiceMode(a.getInt(R.styleable.StickyListHeadersListView_android_choiceMode, + mList.getChoiceMode())); + mList.setDrawSelectorOnTop(a.getBoolean( + R.styleable.StickyListHeadersListView_android_drawSelectorOnTop, false)); + mList.setFastScrollEnabled(a.getBoolean( + R.styleable.StickyListHeadersListView_android_fastScrollEnabled, mList.isFastScrollEnabled())); + mList.setScrollBarStyle(a.getInt(R.styleable.StickyListHeadersListView_android_scrollbarStyle, 0)); + final Drawable selector = a.getDrawable(R.styleable.StickyListHeadersListView_android_listSelector); if (selector != null) { mList.setSelector(selector); } - mList.setScrollingCacheEnabled(a - .getBoolean( - R.styleable.StickyListHeadersListView_android_scrollingCache, - mList.isScrollingCacheEnabled())); - final Drawable divider = a - .getDrawable(R.styleable.StickyListHeadersListView_android_divider); + mList.setScrollingCacheEnabled(a.getBoolean( + R.styleable.StickyListHeadersListView_android_scrollingCache, mList.isScrollingCacheEnabled())); + final Drawable divider = a.getDrawable(R.styleable.StickyListHeadersListView_android_divider); if (divider != null) { mDivider = divider; } - mDividerHeight = a - .getInt(R.styleable.StickyListHeadersListView_android_dividerHeight, - mDividerHeight); + mDividerHeight = a.getInt(R.styleable.StickyListHeadersListView_android_dividerHeight, mDividerHeight); // StickyListHeaders attributes - mAreHeadersSticky = a.getBoolean( - R.styleable.StickyListHeadersListView_hasStickyHeaders, - true); - mIsDrawingListUnderStickyHeader = a - .getBoolean( - R.styleable.StickyListHeadersListView_isDrawingListUnderStickyHeader, - true); + mAreHeadersSticky = a.getBoolean(R.styleable.StickyListHeadersListView_hasStickyHeaders, true); + mIsDrawingListUnderStickyHeader = a.getBoolean( + R.styleable.StickyListHeadersListView_isDrawingListUnderStickyHeader, true); } finally { a.recycle(); @@ -182,19 +163,14 @@ public StickyListHeadersListView(Context context, AttributeSet attrs, } @Override - protected void onLayout(boolean changed, int left, int top, int right, - int bottom) { - mList.layout(mPaddingLeft, 0, mList.getMeasuredWidth() + mPaddingLeft, - getHeight()); + protected void onLayout(boolean changed, int left, int top, int right, int bottom) { + mList.layout(mPaddingLeft, 0, mList.getMeasuredWidth() + mPaddingLeft, getHeight()); if (mHeader != null) { - MarginLayoutParams lp = (MarginLayoutParams) mHeader - .getLayoutParams(); - int headerTop = lp.topMargin - + (mClippingToPadding ? mPaddingTop : 0); + MarginLayoutParams lp = (MarginLayoutParams) mHeader.getLayoutParams(); + int headerTop = lp.topMargin + (mClippingToPadding ? mPaddingTop : 0); // The left parameter must for some reason be set to 0. // I think it should be set to mPaddingLeft but apparently not - mHeader.layout(0, headerTop, mHeader.getMeasuredWidth(), headerTop - + mHeader.getMeasuredHeight()); + mHeader.layout(0, headerTop, mHeader.getMeasuredWidth(), headerTop + mHeader.getMeasuredHeight()); } } @@ -232,12 +208,14 @@ private void updateOrClearHeader(int firstVisiblePosition) { final int headerViewCount = mList.getHeaderViewsCount(); final int realFirstVisibleItem = firstVisiblePosition - headerViewCount; - final boolean isFirstViewBelowTop = mList.getChildAt(0).getTop() > 0; + // It is not a mistake to call getFirstVisiblePosition() here. + // Most of the time getFixedFirstVisibleItem() should be called + // but that does not work great together with getChildAt() + final boolean isFirstViewBelowTop = mList.getFirstVisiblePosition() == 0 && mList.getChildAt(0).getTop() > 0; final boolean isFirstVisibleItemOutsideAdapterRange = realFirstVisibleItem > adapterCount - 1 || realFirstVisibleItem < 0; final boolean doesListHaveChildren = mList.getChildCount() != 0; - if (!doesListHaveChildren || isFirstVisibleItemOutsideAdapterRange - || isFirstViewBelowTop) { + if (!doesListHaveChildren || isFirstVisibleItemOutsideAdapterRange || isFirstViewBelowTop) { clearHeader(); return; } @@ -247,14 +225,13 @@ private void updateOrClearHeader(int firstVisiblePosition) { private void updateHeader(int firstVisiblePosition) { - // check if there is a new header in town + // check if there is a new header should be sticky if (mHeaderPosition == null || mHeaderPosition != firstVisiblePosition) { mHeaderPosition = firstVisiblePosition; final long headerId = mAdapter.getHeaderId(firstVisiblePosition); if (mHeaderId == null || mHeaderId != headerId) { mHeaderId = headerId; - final View header = mAdapter.getHeaderView(mHeaderPosition, - mHeader, this); + final View header = mAdapter.getHeaderView(mHeaderPosition, mHeader, this); if (mHeader != header) { if (header == null) { throw new NullPointerException("header may not be null"); @@ -264,12 +241,9 @@ private void updateHeader(int firstVisiblePosition) { // measure the header final int width = getWidth(); - final int parentWidthMeasureSpec = MeasureSpec.makeMeasureSpec( - width, MeasureSpec.EXACTLY); - final int parentHeightMeasureSpec = MeasureSpec - .makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); - measureChild(mHeader, parentWidthMeasureSpec, - parentHeightMeasureSpec); + final int parentWidthMeasureSpec = MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY); + final int parentHeightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); + measureChild(mHeader, parentWidthMeasureSpec, parentHeightMeasureSpec); // Reset mHeaderOffset to null ensuring // that it will be set on the header and @@ -283,25 +257,21 @@ private void updateHeader(int firstVisiblePosition) { // Calculate new header offset // Skip looking at the first view. it never matters because it always // results in a headerOffset = 0 - int headerBottom = mHeader.getMeasuredHeight() - + (mClippingToPadding ? mPaddingTop : 0); - for (int i = 1; i < mList.getChildCount(); i++) { + int headerBottom = mHeader.getMeasuredHeight() + (mClippingToPadding ? mPaddingTop : 0); + for (int i = 0; i < mList.getChildCount(); i++) { final View child = mList.getChildAt(i); - final boolean doesChildHaveHeader = child instanceof WrapperView - && ((WrapperView) child).hasHeader(); + final boolean doesChildHaveHeader = child instanceof WrapperView && ((WrapperView) child).hasHeader(); final boolean isChildFooter = mList.containsFooterView(child); - if (doesChildHaveHeader || isChildFooter) { + if (child.getTop() >= (mClippingToPadding ? mPaddingTop : 0) && (doesChildHaveHeader || isChildFooter)) { headerOffset = Math.min(child.getTop() - headerBottom, 0); break; } } - headerOffset += mClippingToPadding ? mPaddingTop : 0; setHeaderOffet(headerOffset); if (!mIsDrawingListUnderStickyHeader) { - mList.setTopClippingLength(mHeader.getMeasuredHeight() - + mHeaderOffset); + mList.setTopClippingLength(mHeader.getMeasuredHeight() + mHeaderOffset); } updateHeaderVisibilities(); @@ -317,9 +287,8 @@ private void swapHeader(View newHeader) { @Override public void onClick(View v) { - mOnHeaderClickListener.onHeaderClick( - StickyListHeadersListView.this, mHeader, - mHeaderPosition, mHeaderId, true); + mOnHeaderClickListener.onHeaderClick(StickyListHeadersListView.this, mHeader, mHeaderPosition, + mHeaderId, true); } }); } @@ -329,8 +298,7 @@ public void onClick(View v) { private void updateHeaderVisibilities() { int top; if (mHeader != null) { - top = mHeader.getMeasuredHeight() - + (mHeaderOffset != null ? mHeaderOffset : 0); + top = mHeader.getMeasuredHeight() + (mHeaderOffset != null ? mHeaderOffset : 0); } else { top = mClippingToPadding ? mPaddingTop : 0; } @@ -364,8 +332,7 @@ private void setHeaderOffet(int offset) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { mHeader.setTranslationY(mHeaderOffset); } else { - MarginLayoutParams params = (MarginLayoutParams) mHeader - .getLayoutParams(); + MarginLayoutParams params = (MarginLayoutParams) mHeader.getLayoutParams(); params.topMargin = mHeaderOffset; mHeader.setLayoutParams(params); } @@ -389,11 +356,9 @@ public void onInvalidated() { private class WrapperListScrollListener implements OnScrollListener { @Override - public void onScroll(AbsListView view, int firstVisibleItem, - int visibleItemCount, int totalItemCount) { + public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { if (mOnScrollListenerDelegate != null) { - mOnScrollListenerDelegate.onScroll(view, firstVisibleItem, - visibleItemCount, totalItemCount); + mOnScrollListenerDelegate.onScroll(view, firstVisibleItem, visibleItemCount, totalItemCount); } updateOrClearHeader(mList.getFixedFirstVisibleItem()); } @@ -401,8 +366,7 @@ public void onScroll(AbsListView view, int firstVisibleItem, @Override public void onScrollStateChanged(AbsListView view, int scrollState) { if (mOnScrollListenerDelegate != null) { - mOnScrollListenerDelegate.onScrollStateChanged(view, - scrollState); + mOnScrollListenerDelegate.onScrollStateChanged(view, scrollState); } } @@ -426,22 +390,17 @@ public void onDispatchDrawOccurred(Canvas canvas) { } - private class AdapterWrapperHeaderClickHandler implements - AdapterWrapper.OnHeaderClickListener { + private class AdapterWrapperHeaderClickHandler implements AdapterWrapper.OnHeaderClickListener { @Override public void onHeaderClick(View header, int itemPosition, long headerId) { - mOnHeaderClickListener.onHeaderClick( - StickyListHeadersListView.this, header, itemPosition, - headerId, false); + mOnHeaderClickListener.onHeaderClick(StickyListHeadersListView.this, header, itemPosition, headerId, false); } } private boolean isStartOfSection(int position) { - return position == 0 - || mAdapter.getHeaderId(position) == mAdapter - .getHeaderId(position - 1); + return position == 0 || mAdapter.getHeaderId(position) == mAdapter.getHeaderId(position - 1); } private int getHeaderOverlap(int position) { @@ -450,12 +409,9 @@ private int getHeaderOverlap(int position) { View header = mAdapter.getView(position, null, mList); final int width = getWidth(); - final int parentWidthMeasureSpec = MeasureSpec.makeMeasureSpec( - width, MeasureSpec.EXACTLY); - final int parentHeightMeasureSpec = MeasureSpec.makeMeasureSpec(0, - MeasureSpec.UNSPECIFIED); - measureChild(header, parentWidthMeasureSpec, - parentHeightMeasureSpec); + final int parentWidthMeasureSpec = MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY); + final int parentHeightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); + measureChild(header, parentWidthMeasureSpec, parentHeightMeasureSpec); return header.getMeasuredHeight(); } return 0; @@ -486,8 +442,7 @@ public boolean getAreHeadersSticky() { return areHeadersSticky(); } - public void setDrawingListUnderStickyHeader( - boolean drawingListUnderStickyHeader) { + public void setDrawingListUnderStickyHeader(boolean drawingListUnderStickyHeader) { mIsDrawingListUnderStickyHeader = drawingListUnderStickyHeader; // reset the top clipping length mList.setTopClippingLength(0); @@ -497,8 +452,7 @@ public boolean isDrawingListUnderStickyHeader() { return mIsDrawingListUnderStickyHeader; } - public void setOnHeaderClickListener( - OnHeaderClickListener onHeaderClickListener) { + public void setOnHeaderClickListener(OnHeaderClickListener onHeaderClickListener) { mOnHeaderClickListener = onHeaderClickListener; if (mAdapter != null) { if (mOnHeaderClickListener != null) { @@ -643,8 +597,7 @@ public void smoothScrollToPositionFromTop(int position, int offset) { } @SuppressLint("NewApi") - public void smoothScrollToPositionFromTop(int position, int offset, - int duration) { + public void smoothScrollToPositionFromTop(int position, int offset, int duration) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { throw new ApiLevelTooLowException("requires api lvl 11"); } @@ -720,6 +673,14 @@ public long getItemIdAtPosition(int position) { return mList.getItemIdAtPosition(position); } + @Override + public void setClipToPadding(boolean clipToPadding) { + if (mList != null) { + mList.setClipToPadding(clipToPadding); + } + mClippingToPadding = clipToPadding; + } + @Override public void setPadding(int left, int top, int right, int bottom) { mPaddingLeft = left; @@ -730,7 +691,9 @@ public void setPadding(int left, int top, int right, int bottom) { // Set left/right paddings on the wrapper and top/bottom on the // list to support the clip to padding flag super.setPadding(left, 0, right, 0); - mList.setPadding(0, top, 0, bottom); + if (mList != null) { + mList.setPadding(0, top, 0, bottom); + } } @Override diff --git a/library/src/com/emilsjolander/components/stickylistheaders/WrapperViewList.java b/library/src/com/emilsjolander/components/stickylistheaders/WrapperViewList.java index 693879c8..13e337c6 100644 --- a/library/src/com/emilsjolander/components/stickylistheaders/WrapperViewList.java +++ b/library/src/com/emilsjolander/components/stickylistheaders/WrapperViewList.java @@ -23,6 +23,7 @@ interface LifeCycleListener { private int mTopClippingLength; private Rect mSelectorRect = new Rect();// for if reflection fails private Field mSelectorPositionField; + private boolean mClippingToPadding = true; public WrapperViewList(Context context) { super(context); @@ -30,14 +31,12 @@ public WrapperViewList(Context context) { // Use reflection to be able to change the size/position of the list // selector so it does not come under/over the header try { - Field selectorRectField = AbsListView.class - .getDeclaredField("mSelectorRect"); + Field selectorRectField = AbsListView.class.getDeclaredField("mSelectorRect"); selectorRectField.setAccessible(true); mSelectorRect = (Rect) selectorRectField.get(this); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { - mSelectorPositionField = AbsListView.class - .getDeclaredField("mSelectorPosition"); + mSelectorPositionField = AbsListView.class.getDeclaredField("mSelectorPosition"); mSelectorPositionField.setAccessible(true); } } catch (NoSuchFieldException e) { @@ -146,6 +145,8 @@ int getFixedFirstVisibleItem() { return firstVisibleItem; } + // first getFirstVisiblePosition() reports items + // outside the view sometimes on old versions of android for (int i = 0; i < getChildCount(); i++) { if (getChildAt(i).getBottom() >= 0) { firstVisibleItem += i; @@ -155,13 +156,20 @@ int getFixedFirstVisibleItem() { // work around to fix bug with firstVisibleItem being to high // because list view does not take clipToPadding=false into account - // TODO - /* - * if (!mClippingToPadding && getPaddingTop() > 0) { if - * (getChildAt(0).getTop() > 0) { if (firstVisibleItem > 0) { - * firstVisibleItem -= 1; } } } - */ + // on old versions of android + if (!mClippingToPadding && getPaddingTop() > 0 && firstVisibleItem > 0) { + if (getChildAt(0).getTop() > 0) { + firstVisibleItem -= 1; + } + } + return firstVisibleItem; } + @Override + public void setClipToPadding(boolean clipToPadding) { + mClippingToPadding = clipToPadding; + super.setClipToPadding(clipToPadding); + } + } diff --git a/sample/res/layout/fragment_test.xml b/sample/res/layout/fragment_test.xml index 2955639c..a94d4fe0 100644 --- a/sample/res/layout/fragment_test.xml +++ b/sample/res/layout/fragment_test.xml @@ -9,7 +9,6 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:padding="16dp" - android:clipToPadding="false" android:scrollbarStyle="outsideOverlay" android:fastScrollEnabled="true" android:drawSelectorOnTop="true" /> diff --git a/sample/src/com/emilsjolander/components/stickylistheaders/test/TestFragment.java b/sample/src/com/emilsjolander/components/stickylistheaders/test/TestFragment.java index 354b73ac..2f653c93 100644 --- a/sample/src/com/emilsjolander/components/stickylistheaders/test/TestFragment.java +++ b/sample/src/com/emilsjolander/components/stickylistheaders/test/TestFragment.java @@ -26,8 +26,8 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, mStickyList.setOnItemClickListener(this); mStickyList.setOnHeaderClickListener(this); -// mStickyList.addHeaderView(inflater.inflate(R.layout.list_header, null)); -// mStickyList.addFooterView(inflater.inflate(R.layout.list_footer, null)); + mStickyList.addHeaderView(inflater.inflate(R.layout.list_header, null)); + mStickyList.addFooterView(inflater.inflate(R.layout.list_footer, null)); mStickyList.setEmptyView(v.findViewById(R.id.empty)); mStickyList.setDrawingListUnderStickyHeader(true); From 011576d3c95af11e588c438859220003bdca3a7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Sun, 15 Sep 2013 14:44:48 +0200 Subject: [PATCH 15/90] updated readme to reflect changes --- README.md | 54 ++++++++----------- .../StickyListHeadersListView.java | 11 ++++ sample/res/layout/fragment_test.xml | 1 + .../stickylistheaders/test/TestFragment.java | 4 +- 4 files changed, 37 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index ff886917..8de2561c 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ StickyListHeaders StickyListHeaders is an Android library that makes it easy to integrate section headers in your `ListView`. These section headers stick to the top like in the new People app of Android 4.0 Ice Cream Sandwich. This behavior is also found in lists with sections on iOS devices. This library can also be used for without the sticky functionality if you just want section headers. StickyListHeaders actively supports android versions 2.3 (gingerbread) and above -That said, it should be compatible with much older versions of android as well but these are not actively tested. +That said, it should be compatible with older versions of android as well but these are not actively tested. Here is a short gif showing the functionality you get with this library: @@ -19,17 +19,11 @@ Getting started --------------- ###Installing the library First of all you will have to clone the library. - -If you are using a unix-like terminal first use the following command to navigate to the directory or you choosing. -```shell -cd ~/my/directory -``` -After you are in the directory you want to clone the library to, use this command to clone StickyListHeaders. ```shell git clone https://github.com/emilsjolander/StickyListHeaders.git ``` -Now that you have the library you will have to import it into eclipse (or any other ide but this is how you do it in eclipse). +Now that you have the library you will have to import it into eclipse (or any other IDE but this is how you do it in eclipse). Inn eclipse navigate the menus like this. ``` file -> new -> project -> android project from existing source @@ -136,6 +130,10 @@ public class MyAdapter extends BaseAdapter implements StickyListHeadersAdapter { Thats it! look through the api docs below to get know about things to customize and if you have any problems getting started please open an issue as it probably means the getting started guide need some improvement! +###Upgrading to version 2.x +If you are Upgrading from a version prior to 2.x you might run into the following problems. +1. `StickyListHeadersListView` is no longer a `ListView` subclass. This means that it cannot be passed into a method expecting a ListView. You can retreive an instance of the `ListView` via `getWrappedList()` but use this with caution as things will probably break if you start setting things directly on that list. +2. Because `StickyListHeadersListView` is no longer a `ListView` it does not support all the methods. I have implemented delegate methods for all the usuall methods and gladely accept pull requests for more. Api --- @@ -156,7 +154,7 @@ Your adapter must implement this interface to function with `StickyListHeadersLi Headers are sticky by default but that can easily be changed with this setter. There is of course also a matching getter for the sticky property. ```java public void setAreHeadersSticky(boolean areHeadersSticky); -public boolean getAreHeadersSticky(); +public boolean areHeadersSticky(); ``` A OnHeaderClickListener is the header version of OnItemClickListener. This is the setter for it and the interface of the listener. The currentlySticky boolean flag indicated if the header that was clicked was sticking to the top at the time it was clicked. @@ -168,9 +166,10 @@ public interface OnHeaderClickListener { } ``` -StickyListHeaders wraps the adapter passed to `setAdapter()` is it's own adapter, so `getAdapter()` will not return the adapter that `setAdapter()` was passed. It is often recomended that you keep a reference to the adapter in your activity/fragment but if this does not fit you there is a method to retrieve the original adapter. +Here are two methods added to the API for inspecting the children of the underlying `ListView`. ```java -public StickyListHeadersAdapter getWrappedAdapter(); +public View getListChildAt(int index); +public int getListChildCount(); ``` This is a setter and getter for an internal attribute that controlls if the list should be drawn under the stuck header. The default value is false. If you want to see the list scroll under your header(the header should have a semi-transparent background) you will want to set this attribute to `true`. @@ -179,34 +178,27 @@ public void setDrawingListUnderStickyHeader(boolean drawingListUnderStickyHeader public boolean isDrawingListUnderStickyHeader(); ``` - -Limitations ------------ -There is currently two limitations with this library, they both have to do with what kind of views the header can contain and the both only apply for when sticky header are activated. - -The first limitation is that the header can as of now not contain anything that animates, the list will not crash but the animation will just not run as expected while the header is stuck. The other limitation is that it is currently not possible to have interactive elements in the header, Buttons, switches, etc. will only work when the header is not stuck. - - Contributing ------------ -Contributions are very welcome. Now that this library has grown in popularity i have a hard time keeping upp with all the issues while tending to a multitude of other projects as well as school. So if you find a big in the library or want a feature and think you can fix it yourself, fork + pull request and i will greatly appreciate it! +Contributions are very welcome. Now that this library has grown in popularity i have a hard time keeping upp with all the issues while tending to a multitude of other projects as well as school. So if you find a bug in the library or want a feature and think you can fix it yourself, fork + pull request and i will greatly appreciate it! I love getting pull requests for new features as well as bugs. However, when it comes to new features please also explain the use case and way you think the library should include it. If you don't want to start coding a feature without knowing if the feature will have chance of being included, open an issue and we can discuss the feature! License ------- +``` +Copyright 2013 Emil Sjölander - Copyright 2013 Emil Sjölander - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + http://www.apache.org/licenses/LICENSE-2.0 - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +``` diff --git a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java index a39d8197..12c32e93 100644 --- a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java @@ -14,6 +14,7 @@ import android.widget.AbsListView.OnScrollListener; import android.widget.AdapterView.OnItemClickListener; import android.widget.FrameLayout; +import android.widget.ListView; import com.emilsjolander.components.stickylistheaders.WrapperViewList.LifeCycleListener; @@ -470,6 +471,16 @@ public View getListChildAt(int index) { public int getListChildCount() { return mList.getChildCount(); } + + /** + * Use the method with extreme caution!! + * Changing any values on the underlying ListView might break everything. + * + * @return the ListView backing this view. + */ + public ListView getWrappedList() { + return mList; + } /* ---------- ListView delegate methods ---------- */ diff --git a/sample/res/layout/fragment_test.xml b/sample/res/layout/fragment_test.xml index a94d4fe0..2955639c 100644 --- a/sample/res/layout/fragment_test.xml +++ b/sample/res/layout/fragment_test.xml @@ -9,6 +9,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:padding="16dp" + android:clipToPadding="false" android:scrollbarStyle="outsideOverlay" android:fastScrollEnabled="true" android:drawSelectorOnTop="true" /> diff --git a/sample/src/com/emilsjolander/components/stickylistheaders/test/TestFragment.java b/sample/src/com/emilsjolander/components/stickylistheaders/test/TestFragment.java index 2f653c93..354b73ac 100644 --- a/sample/src/com/emilsjolander/components/stickylistheaders/test/TestFragment.java +++ b/sample/src/com/emilsjolander/components/stickylistheaders/test/TestFragment.java @@ -26,8 +26,8 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, mStickyList.setOnItemClickListener(this); mStickyList.setOnHeaderClickListener(this); - mStickyList.addHeaderView(inflater.inflate(R.layout.list_header, null)); - mStickyList.addFooterView(inflater.inflate(R.layout.list_footer, null)); +// mStickyList.addHeaderView(inflater.inflate(R.layout.list_header, null)); +// mStickyList.addFooterView(inflater.inflate(R.layout.list_footer, null)); mStickyList.setEmptyView(v.findViewById(R.id.empty)); mStickyList.setDrawingListUnderStickyHeader(true); From 5e90acdf23e66a9635108d99af110ee6c195b09c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Sun, 15 Sep 2013 14:53:40 +0200 Subject: [PATCH 16/90] added minor support for android 2.1 --- README.md | 2 +- library/AndroidManifest.xml | 4 ++-- library/project.properties | 2 +- .../StickyListHeadersListView.java | 17 +++++++++++++++++ sample/AndroidManifest.xml | 4 ++-- sample/project.properties | 2 +- 6 files changed, 24 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 8de2561c..c3791375 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ StickyListHeaders StickyListHeaders is an Android library that makes it easy to integrate section headers in your `ListView`. These section headers stick to the top like in the new People app of Android 4.0 Ice Cream Sandwich. This behavior is also found in lists with sections on iOS devices. This library can also be used for without the sticky functionality if you just want section headers. StickyListHeaders actively supports android versions 2.3 (gingerbread) and above -That said, it should be compatible with older versions of android as well but these are not actively tested. +That said, it works all the way down to 2.1 but is not actively tested or working perfectly. Here is a short gif showing the functionality you get with this library: diff --git a/library/AndroidManifest.xml b/library/AndroidManifest.xml index f81a758b..105717c9 100644 --- a/library/AndroidManifest.xml +++ b/library/AndroidManifest.xml @@ -5,7 +5,7 @@ android:versionName="1.0" > + android:minSdkVersion="7" + android:targetSdkVersion="18" /> \ No newline at end of file diff --git a/library/project.properties b/library/project.properties index 484dab07..1b8c5a34 100644 --- a/library/project.properties +++ b/library/project.properties @@ -11,5 +11,5 @@ #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt # Project target. -target=android-17 +target=android-18 android.library=true diff --git a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java index 12c32e93..8414a584 100644 --- a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java @@ -377,6 +377,11 @@ private class WrapperViewListLifeCycleListener implements LifeCycleListener { @Override public void onDispatchDrawOccurred(Canvas canvas) { + // onScroll is not called often at all before froyo + // therefor we need to update the header here as well. + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.FROYO) { + updateOrClearHeader(mList.getFixedFirstVisibleItem()); + } if (mHeader != null) { if (mClippingToPadding) { canvas.save(); @@ -572,7 +577,11 @@ public View setEmptyView() { return mList.getEmptyView(); } + @SuppressLint("NewApi") public void smoothScrollBy(int distance, int duration) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.FROYO) { + throw new ApiLevelTooLowException("requires api lvl 8"); + } mList.smoothScrollBy(distance, duration); } @@ -594,7 +603,11 @@ public void smoothScrollToPosition(int position) { } } + @SuppressLint("NewApi") public void smoothScrollToPosition(int position, int boundPosition) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.FROYO) { + throw new ApiLevelTooLowException("requires api lvl 8"); + } mList.smoothScrollToPosition(position, boundPosition); } @@ -660,7 +673,11 @@ public int getCheckedItemCount() { return mList.getCheckedItemCount(); } + @SuppressLint("NewApi") public long[] getCheckedItemIds() { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.FROYO) { + throw new ApiLevelTooLowException("requires api lvl 8"); + } return mList.getCheckedItemIds(); } diff --git a/sample/AndroidManifest.xml b/sample/AndroidManifest.xml index 4caee783..6cf00853 100644 --- a/sample/AndroidManifest.xml +++ b/sample/AndroidManifest.xml @@ -5,8 +5,8 @@ android:versionName="1.0" > + android:minSdkVersion="7" + android:targetSdkVersion="18" /> Date: Sun, 15 Sep 2013 15:15:52 +0200 Subject: [PATCH 17/90] unregister dataset observer when changing adapter --- .../stickylistheaders/StickyListHeadersListView.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java index 8414a584..332f03e0 100644 --- a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java @@ -61,6 +61,7 @@ public void onHeaderClick(StickyListHeadersListView l, View header, int itemPosi private OnHeaderClickListener mOnHeaderClickListener; private Drawable mDivider; private int mDividerHeight; + private AdapterWrapperDataSetObserver mDataSetObserver; public StickyListHeadersListView(Context context) { this(context, null); @@ -495,9 +496,13 @@ public void setAdapter(StickyListHeadersAdapter adapter) { clearHeader(); return; } + if (mAdapter != null) { + mAdapter.unregisterDataSetObserver(mDataSetObserver); + } mAdapter = new AdapterWrapper(getContext(), adapter); - mAdapter.registerDataSetObserver(new AdapterWrapperDataSetObserver()); + mDataSetObserver = new AdapterWrapperDataSetObserver(); + mAdapter.registerDataSetObserver(mDataSetObserver); if (mOnHeaderClickListener != null) { mAdapter.setOnHeaderClickListener(new AdapterWrapperHeaderClickHandler()); From 91fe36576d845773d81ae29f6367046bf872abe3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Sun, 15 Sep 2013 16:20:37 +0200 Subject: [PATCH 18/90] Update pom.xml --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index ed92f706..5510e946 100644 --- a/pom.xml +++ b/pom.xml @@ -47,8 +47,8 @@ UTF-8 1.6 - 4.2.2_r2 - 17 + 4.3_r1 + 18 From 0d26c26dea4d7bb472eb20a49be2de0610867ea2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Sun, 15 Sep 2013 16:27:32 +0200 Subject: [PATCH 19/90] Update pom.xml --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 5510e946..84fd6f62 100644 --- a/pom.xml +++ b/pom.xml @@ -47,8 +47,8 @@ UTF-8 1.6 - 4.3_r1 - 18 + 4.1.1.4 + 16 From b2a1aad206d5dc5317941891ffed263469ff2792 Mon Sep 17 00:00:00 2001 From: Christian Becker Date: Sun, 15 Sep 2013 17:19:43 +0200 Subject: [PATCH 20/90] Added Gradle build & push system based on Chris Banes' article ( http://chris.banes.me/blog/2013/08/27/pushing-aars-to-maven-central/ ). --- .gitignore | 12 ++++-- README.md | 25 ++++++------ build.gradle | 24 ++++++++++++ gradle.properties | 14 +++++++ library/build.gradle | 31 ++------------- library/gradle.properties | 3 ++ maven_push.gradle | 82 +++++++++++++++++++++++++++++++++++++++ sample/build.gradle | 19 +++++++++ settings.gradle | 2 + 9 files changed, 168 insertions(+), 44 deletions(-) create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 library/gradle.properties create mode 100644 maven_push.gradle create mode 100644 sample/build.gradle create mode 100644 settings.gradle diff --git a/.gitignore b/.gitignore index 6675249f..71d84cca 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ ###Android### - + # built application files *.apk *.ap_ @@ -23,7 +23,7 @@ local.properties ###Eclipse### - + *.pydevproject .project .metadata @@ -53,10 +53,16 @@ local.properties ###Maven### - + target/ +###Gradle### + +.gradle/ +build/ + + ###IntelliJ### *.iml diff --git a/README.md b/README.md index c3791375..08988279 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ StickyListHeaders ================= -StickyListHeaders is an Android library that makes it easy to integrate section headers in your `ListView`. These section headers stick to the top like in the new People app of Android 4.0 Ice Cream Sandwich. This behavior is also found in lists with sections on iOS devices. This library can also be used for without the sticky functionality if you just want section headers. +StickyListHeaders is an Android library that makes it easy to integrate section headers in your `ListView`. These section headers stick to the top like in the new People app of Android 4.0 Ice Cream Sandwich. This behavior is also found in lists with sections on iOS devices. This library can also be used without the sticky functionality if you just want section headers. -StickyListHeaders actively supports android versions 2.3 (gingerbread) and above +StickyListHeaders actively supports android versions 2.3 (gingerbread) and above. That said, it works all the way down to 2.1 but is not actively tested or working perfectly. Here is a short gif showing the functionality you get with this library: @@ -12,7 +12,7 @@ Here is a short gif showing the functionality you get with this library: Goal ---- -The goal of this project is to deliver a high performance replacement to `ListView`. You should with minimal effort and time be able to add section headers to a list. This should be done via a simple to use api without any special features. This library will always priorities general use cases over special ones. This means that the library will add very few public methods to the standard `ListView` and will not try to work for every use case. While i will want to support even narrow use cases i will not do se if it comprimises the api or any other feature. +The goal of this project is to deliver a high performance replacement to `ListView`. You should with minimal effort and time be able to add section headers to a list. This should be done via a simple to use API without any special features. This library will always priorities general use cases over special ones. This means that the library will add very few public methods to the standard `ListView` and will not try to work for every use case. While I will want to support even narrow use cases I will not do so if it compromises the API or any other feature. Getting started @@ -23,15 +23,12 @@ First of all you will have to clone the library. git clone https://github.com/emilsjolander/StickyListHeaders.git ``` -Now that you have the library you will have to import it into eclipse (or any other IDE but this is how you do it in eclipse). -Inn eclipse navigate the menus like this. +Now that you have the library you will have to import it into Android Studio. +In Android Studio navigate the menus like this. ``` -file -> new -> project -> android project from existing source +File -> Import Project ... ``` -In the following dialog navigate to StickyListHeaders which you cloned to your computer in the previous steps. -Press finish and you should have the library in your workspace. - -Now right click the project you want to use StickyListHeaders in and click on `properties`. In the dialog that appears you should navigate to `android` in the side menu. Now press the add button on the bottom right of the dialog and choose StickyListHeaders. Press ok and you are good to go! +In the following dialog navigate to StickyListHeaders which you cloned to your computer in the previous steps and select the `build.gradle`. ###Code @@ -128,12 +125,12 @@ public class MyAdapter extends BaseAdapter implements StickyListHeadersAdapter { } ``` -Thats it! look through the api docs below to get know about things to customize and if you have any problems getting started please open an issue as it probably means the getting started guide need some improvement! +That's it! Look through the API docs below to get know about things to customize and if you have any problems getting started please open an issue as it probably means the getting started guide need some improvement! ###Upgrading to version 2.x If you are Upgrading from a version prior to 2.x you might run into the following problems. -1. `StickyListHeadersListView` is no longer a `ListView` subclass. This means that it cannot be passed into a method expecting a ListView. You can retreive an instance of the `ListView` via `getWrappedList()` but use this with caution as things will probably break if you start setting things directly on that list. -2. Because `StickyListHeadersListView` is no longer a `ListView` it does not support all the methods. I have implemented delegate methods for all the usuall methods and gladely accept pull requests for more. +1. `StickyListHeadersListView` is no longer a `ListView` subclass. This means that it cannot be passed into a method expecting a ListView. You can retrieve an instance of the `ListView` via `getWrappedList()` but use this with caution as things will probably break if you start setting things directly on that list. +2. Because `StickyListHeadersListView` is no longer a `ListView` it does not support all the methods. I have implemented delegate methods for all the usual methods and gladly accept pull requests for more. Api --- @@ -172,7 +169,7 @@ public View getListChildAt(int index); public int getListChildCount(); ``` -This is a setter and getter for an internal attribute that controlls if the list should be drawn under the stuck header. The default value is false. If you want to see the list scroll under your header(the header should have a semi-transparent background) you will want to set this attribute to `true`. +This is a setter and getter for an internal attribute that controls if the list should be drawn under the stuck header. The default value is false. If you want to see the list scroll under your header(the header should have a semi-transparent background) you will want to set this attribute to `true`. ```java public void setDrawingListUnderStickyHeader(boolean drawingListUnderStickyHeader); public boolean isDrawingListUnderStickyHeader(); diff --git a/build.gradle b/build.gradle new file mode 100644 index 00000000..7b17b1a3 --- /dev/null +++ b/build.gradle @@ -0,0 +1,24 @@ +buildscript { + repositories { + mavenCentral() + } + + dependencies { + classpath 'com.android.tools.build:gradle:0.5.+' + } +} + +def isReleaseBuild() { + return version.contains("SNAPSHOT") == false +} + +allprojects { + version = VERSION_NAME + group = GROUP + + repositories { + mavenCentral() + } +} + +apply plugin: 'android-reporting' diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 00000000..a40f3f73 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,14 @@ +VERSION_NAME=2.0.0-SNAPSHOT +VERSION_CODE=72 +GROUP=com.emilsjolander.stickylistheaders + +POM_DESCRIPTION=A small android library that makes it easy to make lists with section headers that stick to the top until a new section header comes along. +POM_URL=https://github.com/emilsjolander/StickyListHeaders +POM_SCM_URL=https://github.com/emilsjolander/StickyListHeaders +POM_SCM_CONNECTION=scm:git:git://github.com/emilsjolander/StickyListHeaders.git +POM_SCM_DEV_CONNECTION=scm:git:git://github.com/emilsjolander/StickyListHeaders.git +POM_LICENCE_NAME=The Apache Software License, Version 2.0 +POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt +POM_LICENCE_DIST=repo +POM_DEVELOPER_ID=emilsjolander +POM_DEVELOPER_NAME=Emil Sjolander diff --git a/library/build.gradle b/library/build.gradle index e92b3ab3..3b1920f2 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -1,39 +1,16 @@ -buildscript { - repositories { - mavenCentral() - } - - dependencies { - classpath 'com.android.tools.build:gradle:0.5.+' - } -} - apply plugin: 'android-library' -apply plugin: 'maven' - -version = "1.0.0-SNAPSHOT" -group = "com.emilsjolander" android { compileSdkVersion 18 - buildToolsVersion "18.0.1" + buildToolsVersion '18.0.1' sourceSets { main { manifest.srcFile 'AndroidManifest.xml' - java { - srcDir 'src/' - } + java.srcDirs = ['src'] + res.srcDirs = ['res'] } } } -uploadArchives { - repositories { - mavenDeployer { - repository url: 'file://' + new File(System.getProperty('user.home'), '.m2/repository').absolutePath - pom.artifactId = "stickylistheaders" - } - } -} -task install(dependsOn: uploadArchives) \ No newline at end of file +apply from: '../maven_push.gradle' diff --git a/library/gradle.properties b/library/gradle.properties new file mode 100644 index 00000000..250343c3 --- /dev/null +++ b/library/gradle.properties @@ -0,0 +1,3 @@ +POM_NAME=StickyListHeaders Library +POM_ARTIFACT_ID=library +POM_PACKAGING=aar diff --git a/maven_push.gradle b/maven_push.gradle new file mode 100644 index 00000000..9d479e67 --- /dev/null +++ b/maven_push.gradle @@ -0,0 +1,82 @@ +apply plugin: 'maven' +apply plugin: 'signing' + +def sonatypeRepositoryUrl +if (isReleaseBuild()) { + println 'RELEASE BUILD' + sonatypeRepositoryUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2/" +} else { + println 'DEBUG BUILD' + sonatypeRepositoryUrl = "https://oss.sonatype.org/content/repositories/snapshots/" +} + +afterEvaluate { project -> + uploadArchives { + repositories { + mavenDeployer { + beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } + + pom.artifactId = POM_ARTIFACT_ID + + repository(url: sonatypeRepositoryUrl) { + authentication(userName: nexusUsername, password: nexusPassword) + } + + pom.project { + name POM_NAME + packaging POM_PACKAGING + description POM_DESCRIPTION + url POM_URL + + scm { + url POM_SCM_URL + connection POM_SCM_CONNECTION + developerConnection POM_SCM_DEV_CONNECTION + } + + licenses { + license { + name POM_LICENCE_NAME + url POM_LICENCE_URL + distribution POM_LICENCE_DIST + } + } + + developers { + developer { + id POM_DEVELOPER_ID + name POM_DEVELOPER_NAME + } + } + } + } + } + } + + signing { + required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") } + sign configurations.archives + } + + task androidJavadocs(type: Javadoc) { + source = android.sourceSets.main.allJava + } + + task androidJavadocsJar(type: Jar) { + classifier = 'javadoc' + //basename = artifact_id + from androidJavadocs.destinationDir + } + + task androidSourcesJar(type: Jar) { + classifier = 'sources' + //basename = artifact_id + from android.sourceSets.main.allSource + } + + artifacts { + //archives packageReleaseJar + archives androidSourcesJar + archives androidJavadocsJar + } +} diff --git a/sample/build.gradle b/sample/build.gradle new file mode 100644 index 00000000..fa7e7e40 --- /dev/null +++ b/sample/build.gradle @@ -0,0 +1,19 @@ +apply plugin: 'android' + +dependencies { + compile project(':library') + compile 'com.android.support:support-v4:18.0.0' +} + +android { + compileSdkVersion 18 + buildToolsVersion '18.0.1' + + sourceSets { + main { + manifest.srcFile 'AndroidManifest.xml' + java.srcDirs = ['src'] + res.srcDirs = ['res'] + } + } +} diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 00000000..2c81ac7f --- /dev/null +++ b/settings.gradle @@ -0,0 +1,2 @@ +include 'library' +include 'sample' From 95407d05f4a73d1d6b47242a25b9a497a5cca9db Mon Sep 17 00:00:00 2001 From: Christian Becker Date: Sun, 15 Sep 2013 17:20:41 +0200 Subject: [PATCH 21/90] Removed old Maven & Eclipse related files. --- library/.project | 33 --------- library/pom.xml | 28 -------- library/project.properties | 15 ----- pom.xml | 103 ----------------------------- sample/.project | 33 --------- sample/libs/android-support-v4.jar | Bin 393154 -> 0 bytes sample/lint.xml | 3 - sample/pom.xml | 46 ------------- sample/project.properties | 15 ----- 9 files changed, 276 deletions(-) delete mode 100644 library/.project delete mode 100644 library/pom.xml delete mode 100644 library/project.properties delete mode 100644 pom.xml delete mode 100644 sample/.project delete mode 100644 sample/libs/android-support-v4.jar delete mode 100644 sample/lint.xml delete mode 100644 sample/pom.xml delete mode 100644 sample/project.properties diff --git a/library/.project b/library/.project deleted file mode 100644 index 9dcaf73e..00000000 --- a/library/.project +++ /dev/null @@ -1,33 +0,0 @@ - - - StickyListHeaders_lib - - - - - - com.android.ide.eclipse.adt.ResourceManagerBuilder - - - - - com.android.ide.eclipse.adt.PreCompilerBuilder - - - - - org.eclipse.jdt.core.javabuilder - - - - - com.android.ide.eclipse.adt.ApkBuilder - - - - - - com.android.ide.eclipse.adt.AndroidNature - org.eclipse.jdt.core.javanature - - diff --git a/library/pom.xml b/library/pom.xml deleted file mode 100644 index adf63688..00000000 --- a/library/pom.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - 4.0.0 - - - com.emilsjolander - stickylistheaders-parent - 1.0.0-SNAPSHOT - ../pom.xml - - - stickylistheaders - StickyListHeaders - jar - - - - android - android - provided - - - - - src - - diff --git a/library/project.properties b/library/project.properties deleted file mode 100644 index 1b8c5a34..00000000 --- a/library/project.properties +++ /dev/null @@ -1,15 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system edit -# "ant.properties", and override values to adapt the script to your -# project structure. -# -# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): -#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt - -# Project target. -target=android-18 -android.library=true diff --git a/pom.xml b/pom.xml deleted file mode 100644 index 84fd6f62..00000000 --- a/pom.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - - 4.0.0 - - - org.sonatype.oss - oss-parent - 7 - - - com.emilsjolander - stickylistheaders-parent - pom - 1.0.0-SNAPSHOT - - StickyListHeaders (Parent) - A small android library that makes it easy to make lists with section headers that stick to the top until a new section header comes along. - https://github.com/emilsjolander/StickyListHeaders - - - library - sample - - - - https://github.com/emilsjolander/StickyListHeaders - scm:git:git://github.com/emilsjolander/StickyListHeaders.git - scm:git:git@github.com:emilsjolander/StickyListHeaders.git - - - - - Apache License Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - repo - - - - - GitHub Issues - https://github.com/emilsjolander/StickyListHeaders/issues - - - - UTF-8 - UTF-8 - - 1.6 - 4.1.1.4 - 16 - - - - - - android - android - ${android.version} - - - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.1 - - ${java.version} - ${java.version} - - - - - com.jayway.maven.plugins.android.generation2 - android-maven-plugin - 3.6.0 - - - ${env.ANDROID_HOME} - ${android.platform} - - - true - - - - - - - org.apache.maven.plugins - maven-release-plugin - 2.2.1 - - true - - - - - diff --git a/sample/.project b/sample/.project deleted file mode 100644 index 0f806bec..00000000 --- a/sample/.project +++ /dev/null @@ -1,33 +0,0 @@ - - - StickyListHeaders_sample - - - - - - com.android.ide.eclipse.adt.ResourceManagerBuilder - - - - - com.android.ide.eclipse.adt.PreCompilerBuilder - - - - - org.eclipse.jdt.core.javabuilder - - - - - com.android.ide.eclipse.adt.ApkBuilder - - - - - - com.android.ide.eclipse.adt.AndroidNature - org.eclipse.jdt.core.javanature - - diff --git a/sample/libs/android-support-v4.jar b/sample/libs/android-support-v4.jar deleted file mode 100644 index 65ebaf8dc3458670e74166e0e69c76360f1554cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 393154 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 l=jnt^|gEvR&( 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 h4122W`N>;ue|tn_^c{I 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 tHCi8sKNBR(JrJQ&O){>j7i5= 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 diff --git a/sample/lint.xml b/sample/lint.xml deleted file mode 100644 index ee0eead5..00000000 --- a/sample/lint.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/sample/pom.xml b/sample/pom.xml deleted file mode 100644 index ee776c6a..00000000 --- a/sample/pom.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - 4.0.0 - - - com.emilsjolander - stickylistheaders-parent - 1.0.0-SNAPSHOT - ../pom.xml - - - stickylistheaders-sample - StickyListHeaders Sample - apk - - - - android - android - provided - - - ${project.groupId} - stickylistheaders - ${project.version} - - - com.google.android - support-v4 - r7 - - - - - src - - - - com.jayway.maven.plugins.android.generation2 - android-maven-plugin - true - - - - diff --git a/sample/project.properties b/sample/project.properties deleted file mode 100644 index 7143bfdb..00000000 --- a/sample/project.properties +++ /dev/null @@ -1,15 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system edit -# "ant.properties", and override values to adapt the script to your -# project structure. -# -# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): -#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt - -# Project target. -target=android-18 -android.library.reference.1=../library From 2d62cc806aed5ec0e6fde7a1f3ae7349af3c7bfa Mon Sep 17 00:00:00 2001 From: Christian Becker Date: Mon, 16 Sep 2013 11:19:32 +0200 Subject: [PATCH 22/90] Updated SampleApp to work with pre-Honeycomb devices --- README.md | 3 +- library/res/.gitignore | 0 sample/AndroidManifest.xml | 8 +- sample/build.gradle | 4 + sample/res/color/header_bg.xml | 7 - sample/res/menu/main_menu.xml | 16 - sample/res/values/colors.xml | 4 +- sample/res/values/strings.xml | 4 +- .../stickylistheaders/test/TestActivity.java | 111 +++---- .../test/TestBaseAdapter.java | 303 +++++++++--------- .../stickylistheaders/test/TestFragment.java | 67 ++-- 11 files changed, 238 insertions(+), 289 deletions(-) delete mode 100644 library/res/.gitignore delete mode 100644 sample/res/color/header_bg.xml delete mode 100644 sample/res/menu/main_menu.xml diff --git a/README.md b/README.md index 08988279..43bb5e65 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,6 @@ In the following dialog navigate to StickyListHeaders which you cloned to your c ###Code Ok lets start with your activities or fragments xml file. It might look something like this. ```xml - + android:versionName="1.0"> + android:supportsRtl="true" + android:theme="@style/Theme.Sherlock.Light.DarkActionBar"> + android:label="@string/app_name"> diff --git a/sample/build.gradle b/sample/build.gradle index fa7e7e40..abbb5453 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -1,8 +1,12 @@ apply plugin: 'android' +repositories { + mavenCentral() +} dependencies { compile project(':library') compile 'com.android.support:support-v4:18.0.0' + compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar' } android { diff --git a/sample/res/color/header_bg.xml b/sample/res/color/header_bg.xml deleted file mode 100644 index da738243..00000000 --- a/sample/res/color/header_bg.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/sample/res/menu/main_menu.xml b/sample/res/menu/main_menu.xml deleted file mode 100644 index 24ad0d71..00000000 --- a/sample/res/menu/main_menu.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/sample/res/values/colors.xml b/sample/res/values/colors.xml index eeb90732..1880a25b 100644 --- a/sample/res/values/colors.xml +++ b/sample/res/values/colors.xml @@ -1,6 +1,6 @@ - + #aae74c3c #aac0392b - + \ No newline at end of file diff --git a/sample/res/values/strings.xml b/sample/res/values/strings.xml index c6571d89..3d917df0 100644 --- a/sample/res/values/strings.xml +++ b/sample/res/values/strings.xml @@ -1,7 +1,5 @@ - - Hello World! - StickyListHeaders_sample + StickyListHeaders Sample \ No newline at end of file diff --git a/sample/src/com/emilsjolander/components/stickylistheaders/test/TestActivity.java b/sample/src/com/emilsjolander/components/stickylistheaders/test/TestActivity.java index df43dd8f..1b9b6761 100644 --- a/sample/src/com/emilsjolander/components/stickylistheaders/test/TestActivity.java +++ b/sample/src/com/emilsjolander/components/stickylistheaders/test/TestActivity.java @@ -1,70 +1,61 @@ package com.emilsjolander.components.stickylistheaders.test; -import android.annotation.TargetApi; -import android.app.ActionBar; -import android.app.ActionBar.Tab; -import android.app.ActionBar.TabListener; -import android.app.FragmentTransaction; -import android.os.Build; import android.os.Bundle; -import android.support.v4.app.FragmentActivity; +import android.support.v4.app.FragmentTransaction; import android.support.v4.view.ViewPager; -import android.support.v4.view.ViewPager.OnPageChangeListener; + +import com.actionbarsherlock.app.ActionBar; +import com.actionbarsherlock.app.SherlockFragmentActivity; /** * @author Emil Sjölander */ -@TargetApi(Build.VERSION_CODES.HONEYCOMB) -public class TestActivity extends FragmentActivity implements OnPageChangeListener { - - private ViewPager mPager; - private TabListener tabChangeListener; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.main); - - mPager = (ViewPager) findViewById(R.id.pager); - mPager.setOnPageChangeListener(this); - mPager.setAdapter(new MainPagerAdapter(getSupportFragmentManager())); - - if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { - - tabChangeListener = new TabListener() { - - @Override - public void onTabReselected(Tab tab, FragmentTransaction ft) {} - - @Override - public void onTabSelected(Tab tab, FragmentTransaction ft) { - mPager.setCurrentItem(tab.getPosition(), true); - } - - @Override - public void onTabUnselected(Tab tab, FragmentTransaction ft) {} - }; - - ActionBar actionBar = getActionBar(); - actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); - actionBar.addTab(getActionBar().newTab().setText("1").setTabListener(tabChangeListener)); - actionBar.addTab(getActionBar().newTab().setText("2").setTabListener(tabChangeListener)); - actionBar.addTab(getActionBar().newTab().setText("3").setTabListener(tabChangeListener)); - actionBar.addTab(getActionBar().newTab().setText("4").setTabListener(tabChangeListener)); - } - } - - @Override - public void onPageScrollStateChanged(int arg0) {} - - @Override - public void onPageScrolled(int arg0, float arg1, int arg2) {} - - @Override - public void onPageSelected(int position) { - if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { - getActionBar().setSelectedNavigationItem(position); - } - } +public class TestActivity extends SherlockFragmentActivity implements + ViewPager.OnPageChangeListener, ActionBar.TabListener { + + private ViewPager mViewPager; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.main); + + mViewPager = (ViewPager) findViewById(R.id.pager); + mViewPager.setOnPageChangeListener(this); + mViewPager.setAdapter(new MainPagerAdapter(getSupportFragmentManager())); + + ActionBar actionBar = getSupportActionBar(); + actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); + actionBar.addTab(actionBar.newTab().setText("1").setTabListener(this)); + actionBar.addTab(actionBar.newTab().setText("2").setTabListener(this)); + actionBar.addTab(actionBar.newTab().setText("3").setTabListener(this)); + actionBar.addTab(actionBar.newTab().setText("4").setTabListener(this)); + } + + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + } + + @Override + public void onPageSelected(int position) { + getSupportActionBar().setSelectedNavigationItem(position); + } + + @Override + public void onPageScrollStateChanged(int state) { + } + + @Override + public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) { + } + + @Override + public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) { + mViewPager.setCurrentItem(tab.getPosition(), true); + } + + @Override + public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) { + } } \ No newline at end of file diff --git a/sample/src/com/emilsjolander/components/stickylistheaders/test/TestBaseAdapter.java b/sample/src/com/emilsjolander/components/stickylistheaders/test/TestBaseAdapter.java index fa57b221..667c8678 100644 --- a/sample/src/com/emilsjolander/components/stickylistheaders/test/TestBaseAdapter.java +++ b/sample/src/com/emilsjolander/components/stickylistheaders/test/TestBaseAdapter.java @@ -1,7 +1,5 @@ package com.emilsjolander.components.stickylistheaders.test; -import java.util.ArrayList; - import android.content.Context; import android.view.LayoutInflater; import android.view.View; @@ -12,166 +10,153 @@ import com.emilsjolander.components.stickylistheaders.StickyListHeadersAdapter; +import java.util.ArrayList; + /** * @author Emil Sjölander */ public class TestBaseAdapter extends BaseAdapter implements - StickyListHeadersAdapter, SectionIndexer { - - private String[] countries; - private int[] sectionIndices; - private Character[] sectionsLetters; - private LayoutInflater inflater; - private Context context; - - public TestBaseAdapter(Context context) { - this.context = context; - inflater = LayoutInflater.from(context); - countries = context.getResources().getStringArray(R.array.countries); - sectionIndices = getSectionIndices(); - sectionsLetters = getStartingLetters(); - } - - private Character[] getStartingLetters() { - Character[] letters = new Character[sectionIndices.length]; - for (int i = 0; i < sectionIndices.length; i++) { - letters[i] = countries[sectionIndices[i]].charAt(0); - } - return letters; - } - - private int[] getSectionIndices() { - ArrayList sectionIndices = new ArrayList(); - char lastFirstChar = countries[0].charAt(0); - sectionIndices.add(0); - for (int i = 1; i < countries.length; i++) { - if (countries[i].charAt(0) != lastFirstChar) { - lastFirstChar = countries[i].charAt(0); - sectionIndices.add(i); - } - } - int[] sections = new int[sectionIndices.size()]; - for (int i = 0; i < sectionIndices.size(); i++) { - sections[i] = sectionIndices.get(i); - } - return sections; - } - - @Override - public int getCount() { - return countries.length; - } - - @Override - public Object getItem(int position) { - return countries[position]; - } - - @Override - public long getItemId(int position) { - return position; - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - ViewHolder holder; - - if (convertView == null) { - holder = new ViewHolder(); - convertView = inflater.inflate(R.layout.test_list_item_layout, - parent, false); - holder.text = (TextView) convertView.findViewById(R.id.text); - convertView.setTag(holder); - } else { - holder = (ViewHolder) convertView.getTag(); - } - - holder.text.setText(countries[position]); - - return convertView; - } - - @Override - public View getHeaderView(int position, View convertView, ViewGroup parent) { - HeaderViewHolder holder; - if (convertView == null) { - holder = new HeaderViewHolder(); - convertView = inflater.inflate(R.layout.header, parent, false); - holder.text1 = (TextView) convertView.findViewById(R.id.text1); - convertView.setTag(holder); - } else { - holder = (HeaderViewHolder) convertView.getTag(); - } - // set header text as first char in name - char headerChar = countries[position].subSequence(0, 1).charAt(0); - String headerText; - if (headerChar % 2 == 0) { - headerText = headerChar + "\n" + headerChar + "\n" + headerChar; - } else { - headerText = headerChar + "\n" + headerChar; - } - holder.text1.setText(headerText); - return convertView; - } - - // remember that these have to be static, postion=1 should walys return the - // same Id that is. - @Override - public long getHeaderId(int position) { - // return the first character of the country as ID because this is what - // headers are based upon - return countries[position].subSequence(0, 1).charAt(0); - } - - class HeaderViewHolder { - TextView text1; - } - - class ViewHolder { - TextView text; - } - - @Override - public int getPositionForSection(int section) { - if (section >= sectionIndices.length) { - section = sectionIndices.length - 1; - } else if (section < 0) { - section = 0; - } - return sectionIndices[section]; - } - - @Override - public int getSectionForPosition(int position) { - for (int i = 0; i < sectionIndices.length; i++) { - if (position < sectionIndices[i]) { - return i - 1; - } - } - return sectionIndices.length - 1; - } - - @Override - public Object[] getSections() { - return sectionsLetters; - } - - public void clear() { - sectionIndices = new int[0]; - sectionsLetters = new Character[0]; - countries = new String[0]; - notifyDataSetChanged(); - } - - public void restore() { - countries = context.getResources().getStringArray(R.array.countries); - sectionIndices = getSectionIndices(); - sectionsLetters = getStartingLetters(); - notifyDataSetChanged(); - } - - public int getSectionStart(int itemPosition) { - return getPositionForSection(getSectionForPosition(itemPosition)); - } + StickyListHeadersAdapter, SectionIndexer { + + private String[] countries; + private int[] sectionIndices; + private Character[] sectionsLetters; + private LayoutInflater inflater; + + public TestBaseAdapter(Context context) { + inflater = LayoutInflater.from(context); + countries = context.getResources().getStringArray(R.array.countries); + sectionIndices = getSectionIndices(); + sectionsLetters = getStartingLetters(); + } + + private Character[] getStartingLetters() { + Character[] letters = new Character[sectionIndices.length]; + for (int i = 0; i < sectionIndices.length; i++) { + letters[i] = countries[sectionIndices[i]].charAt(0); + } + return letters; + } + + private int[] getSectionIndices() { + ArrayList sectionIndices = new ArrayList(); + char lastFirstChar = countries[0].charAt(0); + sectionIndices.add(0); + for (int i = 1; i < countries.length; i++) { + if (countries[i].charAt(0) != lastFirstChar) { + lastFirstChar = countries[i].charAt(0); + sectionIndices.add(i); + } + } + int[] sections = new int[sectionIndices.size()]; + for (int i = 0; i < sectionIndices.size(); i++) { + sections[i] = sectionIndices.get(i); + } + return sections; + } + + @Override + public int getCount() { + return countries.length; + } + + @Override + public Object getItem(int position) { + return countries[position]; + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + ViewHolder holder; + + if (convertView == null) { + holder = new ViewHolder(); + convertView = inflater.inflate(R.layout.test_list_item_layout, + parent, false); + holder.text = (TextView) convertView.findViewById(R.id.text); + convertView.setTag(holder); + } else { + holder = (ViewHolder) convertView.getTag(); + } + + holder.text.setText(countries[position]); + + return convertView; + } + + @Override + public View getHeaderView(int position, View convertView, ViewGroup parent) { + HeaderViewHolder holder; + + if (convertView == null) { + holder = new HeaderViewHolder(); + convertView = inflater.inflate(R.layout.header, parent, false); + holder.text1 = (TextView) convertView.findViewById(R.id.text1); + convertView.setTag(holder); + } else { + holder = (HeaderViewHolder) convertView.getTag(); + } + + // set header text as first char in name + char headerChar = countries[position].subSequence(0, 1).charAt(0); + String headerText; + if (headerChar % 2 == 0) { + headerText = headerChar + "\n" + headerChar + "\n" + headerChar; + } else { + headerText = headerChar + "\n" + headerChar; + } + holder.text1.setText(headerText); + + return convertView; + } + + /** + * Remember that these have to be static, postion=1 should always return + * the same Id that is. + */ + @Override + public long getHeaderId(int position) { + // return the first character of the country as ID because this is what + // headers are based upon + return countries[position].subSequence(0, 1).charAt(0); + } + + @Override + public int getPositionForSection(int section) { + if (section >= sectionIndices.length) { + section = sectionIndices.length - 1; + } else if (section < 0) { + section = 0; + } + return sectionIndices[section]; + } + + @Override + public int getSectionForPosition(int position) { + for (int i = 0; i < sectionIndices.length; i++) { + if (position < sectionIndices[i]) { + return i - 1; + } + } + return sectionIndices.length - 1; + } + + @Override + public Object[] getSections() { + return sectionsLetters; + } + + class HeaderViewHolder { + TextView text1; + } + + class ViewHolder { + TextView text; + } } diff --git a/sample/src/com/emilsjolander/components/stickylistheaders/test/TestFragment.java b/sample/src/com/emilsjolander/components/stickylistheaders/test/TestFragment.java index 354b73ac..bd59042f 100644 --- a/sample/src/com/emilsjolander/components/stickylistheaders/test/TestFragment.java +++ b/sample/src/com/emilsjolander/components/stickylistheaders/test/TestFragment.java @@ -1,6 +1,5 @@ package com.emilsjolander.components.stickylistheaders.test; -import static android.widget.Toast.LENGTH_SHORT; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; @@ -10,47 +9,43 @@ import android.widget.Toast; import com.emilsjolander.components.stickylistheaders.StickyListHeadersListView; -import com.emilsjolander.components.stickylistheaders.StickyListHeadersListView.OnHeaderClickListener; public class TestFragment extends Fragment implements - AdapterView.OnItemClickListener, OnHeaderClickListener { + AdapterView.OnItemClickListener, StickyListHeadersListView.OnHeaderClickListener { - private TestBaseAdapter mAdapter; - private StickyListHeadersListView mStickyList; + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + View v = inflater.inflate(R.layout.fragment_test, container, false); - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - View v = inflater.inflate(R.layout.fragment_test, container, false); - mStickyList = (StickyListHeadersListView) v.findViewById(R.id.list); - mStickyList.setOnItemClickListener(this); - mStickyList.setOnHeaderClickListener(this); + StickyListHeadersListView stickyList = (StickyListHeadersListView) v.findViewById(R.id.list); + stickyList.setOnItemClickListener(this); + stickyList.setOnHeaderClickListener(this); // mStickyList.addHeaderView(inflater.inflate(R.layout.list_header, null)); // mStickyList.addFooterView(inflater.inflate(R.layout.list_footer, null)); - mStickyList.setEmptyView(v.findViewById(R.id.empty)); - - mStickyList.setDrawingListUnderStickyHeader(true); - mStickyList.setAreHeadersSticky(true); - - mAdapter = new TestBaseAdapter(getActivity()); - mStickyList.setAdapter(mAdapter); - - return v; - } - - @Override - public void onItemClick(AdapterView parent, View view, int position, - long id) { - Toast.makeText(getActivity(), "Item " + position + " clicked!", - LENGTH_SHORT).show(); - } - - @Override - public void onHeaderClick(StickyListHeadersListView l, View header, - int itemPosition, long headerId, boolean currentlySticky) { - Toast.makeText(getActivity(), "Header " + headerId + " currentlySticky ?"+currentlySticky, - LENGTH_SHORT).show(); - } + stickyList.setEmptyView(v.findViewById(R.id.empty)); + + stickyList.setDrawingListUnderStickyHeader(true); + stickyList.setAreHeadersSticky(true); + + stickyList.setAdapter(new TestBaseAdapter(getActivity())); + + return v; + } + + @Override + public void onItemClick(AdapterView parent, View view, int position, + long id) { + Toast.makeText(getActivity(), "Item " + position + " clicked!", + Toast.LENGTH_SHORT).show(); + } + + @Override + public void onHeaderClick(StickyListHeadersListView l, View header, + int itemPosition, long headerId, boolean currentlySticky) { + Toast.makeText(getActivity(), "Header " + headerId + " currentlySticky ? " + currentlySticky, + Toast.LENGTH_SHORT).show(); + } } From 851a676e5bde0fb041bd75a37aafc388dc208071 Mon Sep 17 00:00:00 2001 From: Christian Becker Date: Mon, 16 Sep 2013 11:45:19 +0200 Subject: [PATCH 23/90] Removed ViewPager and brought back the menu for clearing/restoring the adapter --- sample/res/layout/fragment_test.xml | 26 ------ sample/res/layout/main.xml | 27 +++++- sample/res/menu/main.xml | 16 ++++ sample/res/values/strings.xml | 4 + .../test/MainPagerAdapter.java | 24 ------ .../stickylistheaders/test/TestActivity.java | 71 ++++++++++------ .../test/TestBaseAdapter.java | 85 +++++++++++-------- .../stickylistheaders/test/TestFragment.java | 51 ----------- 8 files changed, 139 insertions(+), 165 deletions(-) delete mode 100644 sample/res/layout/fragment_test.xml create mode 100644 sample/res/menu/main.xml delete mode 100644 sample/src/com/emilsjolander/components/stickylistheaders/test/MainPagerAdapter.java delete mode 100644 sample/src/com/emilsjolander/components/stickylistheaders/test/TestFragment.java diff --git a/sample/res/layout/fragment_test.xml b/sample/res/layout/fragment_test.xml deleted file mode 100644 index 2955639c..00000000 --- a/sample/res/layout/fragment_test.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/sample/res/layout/main.xml b/sample/res/layout/main.xml index 812f95a2..0f8e55fb 100644 --- a/sample/res/layout/main.xml +++ b/sample/res/layout/main.xml @@ -1,5 +1,24 @@ - - + android:layout_height="match_parent"> + + + + + + \ No newline at end of file diff --git a/sample/res/menu/main.xml b/sample/res/menu/main.xml new file mode 100644 index 00000000..9ea0ca4a --- /dev/null +++ b/sample/res/menu/main.xml @@ -0,0 +1,16 @@ + + + + + + + \ No newline at end of file diff --git a/sample/res/values/strings.xml b/sample/res/values/strings.xml index 3d917df0..65bb4367 100644 --- a/sample/res/values/strings.xml +++ b/sample/res/values/strings.xml @@ -1,5 +1,9 @@ StickyListHeaders Sample + Restore + Update + Clear + Empty Adapter \ No newline at end of file diff --git a/sample/src/com/emilsjolander/components/stickylistheaders/test/MainPagerAdapter.java b/sample/src/com/emilsjolander/components/stickylistheaders/test/MainPagerAdapter.java deleted file mode 100644 index 280fc7c9..00000000 --- a/sample/src/com/emilsjolander/components/stickylistheaders/test/MainPagerAdapter.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.emilsjolander.components.stickylistheaders.test; - -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; -import android.support.v4.app.FragmentPagerAdapter; - -public class MainPagerAdapter extends FragmentPagerAdapter { - - public MainPagerAdapter(FragmentManager fm) { - super(fm); - } - - @Override - public Fragment getItem(int position) { - return new TestFragment(); - } - - @Override - public int getCount() { - return 4; - } - - -} diff --git a/sample/src/com/emilsjolander/components/stickylistheaders/test/TestActivity.java b/sample/src/com/emilsjolander/components/stickylistheaders/test/TestActivity.java index 1b9b6761..14793749 100644 --- a/sample/src/com/emilsjolander/components/stickylistheaders/test/TestActivity.java +++ b/sample/src/com/emilsjolander/components/stickylistheaders/test/TestActivity.java @@ -1,61 +1,80 @@ package com.emilsjolander.components.stickylistheaders.test; import android.os.Bundle; -import android.support.v4.app.FragmentTransaction; -import android.support.v4.view.ViewPager; +import android.view.View; +import android.widget.AdapterView; +import android.widget.Toast; -import com.actionbarsherlock.app.ActionBar; import com.actionbarsherlock.app.SherlockFragmentActivity; +import com.actionbarsherlock.view.Menu; +import com.actionbarsherlock.view.MenuItem; +import com.emilsjolander.components.stickylistheaders.StickyListHeadersListView; /** * @author Emil Sjölander */ public class TestActivity extends SherlockFragmentActivity implements - ViewPager.OnPageChangeListener, ActionBar.TabListener { + AdapterView.OnItemClickListener, StickyListHeadersListView.OnHeaderClickListener { - private ViewPager mViewPager; + private TestBaseAdapter mAdapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); - mViewPager = (ViewPager) findViewById(R.id.pager); - mViewPager.setOnPageChangeListener(this); - mViewPager.setAdapter(new MainPagerAdapter(getSupportFragmentManager())); + mAdapter = new TestBaseAdapter(this); - ActionBar actionBar = getSupportActionBar(); - actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); - actionBar.addTab(actionBar.newTab().setText("1").setTabListener(this)); - actionBar.addTab(actionBar.newTab().setText("2").setTabListener(this)); - actionBar.addTab(actionBar.newTab().setText("3").setTabListener(this)); - actionBar.addTab(actionBar.newTab().setText("4").setTabListener(this)); - } + StickyListHeadersListView stickyList = (StickyListHeadersListView) findViewById(R.id.list); + stickyList.setOnItemClickListener(this); + stickyList.setOnHeaderClickListener(this); - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - } +// mStickyList.addHeaderView(inflater.inflate(R.layout.list_header, null)); +// mStickyList.addFooterView(inflater.inflate(R.layout.list_footer, null)); + stickyList.setEmptyView(findViewById(R.id.empty)); - @Override - public void onPageSelected(int position) { - getSupportActionBar().setSelectedNavigationItem(position); + stickyList.setDrawingListUnderStickyHeader(true); + stickyList.setAreHeadersSticky(true); + + stickyList.setAdapter(mAdapter); } @Override - public void onPageScrollStateChanged(int state) { + public boolean onCreateOptionsMenu(Menu menu) { + getSupportMenuInflater().inflate(R.menu.main, menu); + + return true; } @Override - public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) { + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.restore: + mAdapter.restore(); + return true; + case R.id.update: + mAdapter.notifyDataSetChanged(); + return true; + case R.id.clear: + mAdapter.clear(); + return true; + default: + return super.onOptionsItemSelected(item); + } } @Override - public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) { - mViewPager.setCurrentItem(tab.getPosition(), true); + public void onItemClick(AdapterView parent, View view, int position, + long id) { + Toast.makeText(this, "Item " + position + " clicked!", + Toast.LENGTH_SHORT).show(); } @Override - public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) { + public void onHeaderClick(StickyListHeadersListView l, View header, + int itemPosition, long headerId, boolean currentlySticky) { + Toast.makeText(this, "Header " + headerId + " currentlySticky ? " + currentlySticky, + Toast.LENGTH_SHORT).show(); } } \ No newline at end of file diff --git a/sample/src/com/emilsjolander/components/stickylistheaders/test/TestBaseAdapter.java b/sample/src/com/emilsjolander/components/stickylistheaders/test/TestBaseAdapter.java index 667c8678..2f70148d 100644 --- a/sample/src/com/emilsjolander/components/stickylistheaders/test/TestBaseAdapter.java +++ b/sample/src/com/emilsjolander/components/stickylistheaders/test/TestBaseAdapter.java @@ -18,33 +18,35 @@ public class TestBaseAdapter extends BaseAdapter implements StickyListHeadersAdapter, SectionIndexer { - private String[] countries; - private int[] sectionIndices; - private Character[] sectionsLetters; - private LayoutInflater inflater; + private final Context mContext; + private String[] mCountries; + private int[] mSectionIndices; + private Character[] mSectionLetters; + private LayoutInflater mInflater; public TestBaseAdapter(Context context) { - inflater = LayoutInflater.from(context); - countries = context.getResources().getStringArray(R.array.countries); - sectionIndices = getSectionIndices(); - sectionsLetters = getStartingLetters(); + mContext = context; + mInflater = LayoutInflater.from(context); + mCountries = context.getResources().getStringArray(R.array.countries); + mSectionIndices = getmSectionIndices(); + mSectionLetters = getStartingLetters(); } private Character[] getStartingLetters() { - Character[] letters = new Character[sectionIndices.length]; - for (int i = 0; i < sectionIndices.length; i++) { - letters[i] = countries[sectionIndices[i]].charAt(0); + Character[] letters = new Character[mSectionIndices.length]; + for (int i = 0; i < mSectionIndices.length; i++) { + letters[i] = mCountries[mSectionIndices[i]].charAt(0); } return letters; } - private int[] getSectionIndices() { + private int[] getmSectionIndices() { ArrayList sectionIndices = new ArrayList(); - char lastFirstChar = countries[0].charAt(0); + char lastFirstChar = mCountries[0].charAt(0); sectionIndices.add(0); - for (int i = 1; i < countries.length; i++) { - if (countries[i].charAt(0) != lastFirstChar) { - lastFirstChar = countries[i].charAt(0); + for (int i = 1; i < mCountries.length; i++) { + if (mCountries[i].charAt(0) != lastFirstChar) { + lastFirstChar = mCountries[i].charAt(0); sectionIndices.add(i); } } @@ -57,12 +59,12 @@ private int[] getSectionIndices() { @Override public int getCount() { - return countries.length; + return mCountries.length; } @Override public Object getItem(int position) { - return countries[position]; + return mCountries[position]; } @Override @@ -70,47 +72,48 @@ public long getItemId(int position) { return position; } + @SuppressWarnings("ConstantConditions") @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { holder = new ViewHolder(); - convertView = inflater.inflate(R.layout.test_list_item_layout, - parent, false); + convertView = mInflater.inflate(R.layout.test_list_item_layout, parent, false); holder.text = (TextView) convertView.findViewById(R.id.text); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } - holder.text.setText(countries[position]); + holder.text.setText(mCountries[position]); return convertView; } + @SuppressWarnings("ConstantConditions") @Override public View getHeaderView(int position, View convertView, ViewGroup parent) { HeaderViewHolder holder; if (convertView == null) { holder = new HeaderViewHolder(); - convertView = inflater.inflate(R.layout.header, parent, false); - holder.text1 = (TextView) convertView.findViewById(R.id.text1); + convertView = mInflater.inflate(R.layout.header, parent, false); + holder.text = (TextView) convertView.findViewById(R.id.text1); convertView.setTag(holder); } else { holder = (HeaderViewHolder) convertView.getTag(); } // set header text as first char in name - char headerChar = countries[position].subSequence(0, 1).charAt(0); + char headerChar = mCountries[position].subSequence(0, 1).charAt(0); String headerText; if (headerChar % 2 == 0) { headerText = headerChar + "\n" + headerChar + "\n" + headerChar; } else { headerText = headerChar + "\n" + headerChar; } - holder.text1.setText(headerText); + holder.text.setText(headerText); return convertView; } @@ -123,36 +126,50 @@ public View getHeaderView(int position, View convertView, ViewGroup parent) { public long getHeaderId(int position) { // return the first character of the country as ID because this is what // headers are based upon - return countries[position].subSequence(0, 1).charAt(0); + return mCountries[position].subSequence(0, 1).charAt(0); } @Override public int getPositionForSection(int section) { - if (section >= sectionIndices.length) { - section = sectionIndices.length - 1; + if (section >= mSectionIndices.length) { + section = mSectionIndices.length - 1; } else if (section < 0) { section = 0; } - return sectionIndices[section]; + return mSectionIndices[section]; } @Override public int getSectionForPosition(int position) { - for (int i = 0; i < sectionIndices.length; i++) { - if (position < sectionIndices[i]) { + for (int i = 0; i < mSectionIndices.length; i++) { + if (position < mSectionIndices[i]) { return i - 1; } } - return sectionIndices.length - 1; + return mSectionIndices.length - 1; } @Override public Object[] getSections() { - return sectionsLetters; + return mSectionLetters; + } + + public void clear() { + mSectionIndices = new int[0]; + mSectionLetters = new Character[0]; + mCountries = new String[0]; + notifyDataSetChanged(); + } + + public void restore() { + mCountries = mContext.getResources().getStringArray(R.array.countries); + mSectionIndices = getmSectionIndices(); + mSectionLetters = getStartingLetters(); + notifyDataSetChanged(); } class HeaderViewHolder { - TextView text1; + TextView text; } class ViewHolder { diff --git a/sample/src/com/emilsjolander/components/stickylistheaders/test/TestFragment.java b/sample/src/com/emilsjolander/components/stickylistheaders/test/TestFragment.java deleted file mode 100644 index bd59042f..00000000 --- a/sample/src/com/emilsjolander/components/stickylistheaders/test/TestFragment.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.emilsjolander.components.stickylistheaders.test; - -import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.AdapterView; -import android.widget.Toast; - -import com.emilsjolander.components.stickylistheaders.StickyListHeadersListView; - -public class TestFragment extends Fragment implements - AdapterView.OnItemClickListener, StickyListHeadersListView.OnHeaderClickListener { - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - View v = inflater.inflate(R.layout.fragment_test, container, false); - - StickyListHeadersListView stickyList = (StickyListHeadersListView) v.findViewById(R.id.list); - stickyList.setOnItemClickListener(this); - stickyList.setOnHeaderClickListener(this); - -// mStickyList.addHeaderView(inflater.inflate(R.layout.list_header, null)); -// mStickyList.addFooterView(inflater.inflate(R.layout.list_footer, null)); - stickyList.setEmptyView(v.findViewById(R.id.empty)); - - stickyList.setDrawingListUnderStickyHeader(true); - stickyList.setAreHeadersSticky(true); - - stickyList.setAdapter(new TestBaseAdapter(getActivity())); - - return v; - } - - @Override - public void onItemClick(AdapterView parent, View view, int position, - long id) { - Toast.makeText(getActivity(), "Item " + position + " clicked!", - Toast.LENGTH_SHORT).show(); - } - - @Override - public void onHeaderClick(StickyListHeadersListView l, View header, - int itemPosition, long headerId, boolean currentlySticky) { - Toast.makeText(getActivity(), "Header " + headerId + " currentlySticky ? " + currentlySticky, - Toast.LENGTH_SHORT).show(); - } - -} From 535bdc8a6c26064800c87d30ce40bd7507e694af Mon Sep 17 00:00:00 2001 From: Christian Becker Date: Mon, 16 Sep 2013 11:47:34 +0200 Subject: [PATCH 24/90] Removed unneeded SectionIndexer from TestBaseAdapter --- .../test/TestBaseAdapter.java | 64 +------------------ 1 file changed, 1 insertion(+), 63 deletions(-) diff --git a/sample/src/com/emilsjolander/components/stickylistheaders/test/TestBaseAdapter.java b/sample/src/com/emilsjolander/components/stickylistheaders/test/TestBaseAdapter.java index 2f70148d..31d01166 100644 --- a/sample/src/com/emilsjolander/components/stickylistheaders/test/TestBaseAdapter.java +++ b/sample/src/com/emilsjolander/components/stickylistheaders/test/TestBaseAdapter.java @@ -5,56 +5,23 @@ import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; -import android.widget.SectionIndexer; import android.widget.TextView; import com.emilsjolander.components.stickylistheaders.StickyListHeadersAdapter; -import java.util.ArrayList; - /** * @author Emil Sjölander */ -public class TestBaseAdapter extends BaseAdapter implements - StickyListHeadersAdapter, SectionIndexer { +public class TestBaseAdapter extends BaseAdapter implements StickyListHeadersAdapter { private final Context mContext; private String[] mCountries; - private int[] mSectionIndices; - private Character[] mSectionLetters; private LayoutInflater mInflater; public TestBaseAdapter(Context context) { mContext = context; mInflater = LayoutInflater.from(context); mCountries = context.getResources().getStringArray(R.array.countries); - mSectionIndices = getmSectionIndices(); - mSectionLetters = getStartingLetters(); - } - - private Character[] getStartingLetters() { - Character[] letters = new Character[mSectionIndices.length]; - for (int i = 0; i < mSectionIndices.length; i++) { - letters[i] = mCountries[mSectionIndices[i]].charAt(0); - } - return letters; - } - - private int[] getmSectionIndices() { - ArrayList sectionIndices = new ArrayList(); - char lastFirstChar = mCountries[0].charAt(0); - sectionIndices.add(0); - for (int i = 1; i < mCountries.length; i++) { - if (mCountries[i].charAt(0) != lastFirstChar) { - lastFirstChar = mCountries[i].charAt(0); - sectionIndices.add(i); - } - } - int[] sections = new int[sectionIndices.size()]; - for (int i = 0; i < sectionIndices.size(); i++) { - sections[i] = sectionIndices.get(i); - } - return sections; } @Override @@ -129,42 +96,13 @@ public long getHeaderId(int position) { return mCountries[position].subSequence(0, 1).charAt(0); } - @Override - public int getPositionForSection(int section) { - if (section >= mSectionIndices.length) { - section = mSectionIndices.length - 1; - } else if (section < 0) { - section = 0; - } - return mSectionIndices[section]; - } - - @Override - public int getSectionForPosition(int position) { - for (int i = 0; i < mSectionIndices.length; i++) { - if (position < mSectionIndices[i]) { - return i - 1; - } - } - return mSectionIndices.length - 1; - } - - @Override - public Object[] getSections() { - return mSectionLetters; - } - public void clear() { - mSectionIndices = new int[0]; - mSectionLetters = new Character[0]; mCountries = new String[0]; notifyDataSetChanged(); } public void restore() { mCountries = mContext.getResources().getStringArray(R.array.countries); - mSectionIndices = getmSectionIndices(); - mSectionLetters = getStartingLetters(); notifyDataSetChanged(); } From 228bfca7a1c8c6a8ef42c5f5b5836c6a0348cbdb Mon Sep 17 00:00:00 2001 From: Christian Becker Date: Mon, 16 Sep 2013 12:48:42 +0200 Subject: [PATCH 25/90] - Use TargetApi instead of SuppressLint("NewApi") - Refactored ApiLevelTooLowException - Fixed delegate for getEmptyView (was setEmptyView before) --- .../ApiLevelTooLowException.java | 13 +- .../StickyListHeadersListView.java | 260 +++++++++--------- 2 files changed, 137 insertions(+), 136 deletions(-) diff --git a/library/src/com/emilsjolander/components/stickylistheaders/ApiLevelTooLowException.java b/library/src/com/emilsjolander/components/stickylistheaders/ApiLevelTooLowException.java index d47e171c..499f82a1 100644 --- a/library/src/com/emilsjolander/components/stickylistheaders/ApiLevelTooLowException.java +++ b/library/src/com/emilsjolander/components/stickylistheaders/ApiLevelTooLowException.java @@ -2,13 +2,10 @@ public class ApiLevelTooLowException extends RuntimeException { - public ApiLevelTooLowException(String string) { - super(string); - } - - /** - * - */ - private static final long serialVersionUID = -5480068364264456757L; + private static final long serialVersionUID = -5480068364264456757L; + + public ApiLevelTooLowException(int versionCode) { + super("Requires API level " + versionCode); + } } diff --git a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java index 332f03e0..f7f93045 100644 --- a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java @@ -1,6 +1,7 @@ package com.emilsjolander.components.stickylistheaders; import android.annotation.SuppressLint; +import android.annotation.TargetApi; import android.content.Context; import android.content.res.TypedArray; import android.database.DataSetObserver; @@ -19,14 +20,14 @@ import com.emilsjolander.components.stickylistheaders.WrapperViewList.LifeCycleListener; /** + * Even though this is a FrameLayout subclass we it is called a + * ListView. This is because of 2 reasons. 1. It acts like as ListView + * 2. It used to be a ListView subclass and i did not was to change to + * name causing compatibility errors. + * * @author Emil Sjölander - * - * Even though this is a FrameLayout subclass we it is called a - * ListView. This is because of 2 reasons. 1. It acts like as ListView - * 2. It used to be a ListView subclass and i did not was to change to - * name causing compatibility errors. - * */ +@SuppressWarnings("unused") // Public API public class StickyListHeadersListView extends FrameLayout { public interface OnHeaderClickListener { @@ -71,6 +72,7 @@ public StickyListHeadersListView(Context context, AttributeSet attrs) { this(context, attrs, 0); } + @TargetApi(Build.VERSION_CODES.HONEYCOMB) public StickyListHeadersListView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); @@ -134,9 +136,11 @@ public StickyListHeadersListView(Context context, AttributeSet attrs, int defSty } mList.setCacheColorHint(a.getColor(R.styleable.StickyListHeadersListView_android_cacheColorHint, mList.getCacheColorHint())); - mList.setChoiceMode(a.getInt(R.styleable.StickyListHeadersListView_android_choiceMode, - mList.getChoiceMode())); - mList.setDrawSelectorOnTop(a.getBoolean( + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB) { + mList.setChoiceMode(a.getInt(R.styleable.StickyListHeadersListView_android_choiceMode, + mList.getChoiceMode())); + } + mList.setDrawSelectorOnTop(a.getBoolean( R.styleable.StickyListHeadersListView_android_drawSelectorOnTop, false)); mList.setFastScrollEnabled(a.getBoolean( R.styleable.StickyListHeadersListView_android_fastScrollEnabled, mList.isFastScrollEnabled())); @@ -574,125 +578,119 @@ public int getFooterViewsCount() { return mList.getFooterViewsCount(); } - public void setEmptyView(View v) { - mList.setEmptyView(v); - } - - public View setEmptyView() { - return mList.getEmptyView(); - } - - @SuppressLint("NewApi") - public void smoothScrollBy(int distance, int duration) { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.FROYO) { - throw new ApiLevelTooLowException("requires api lvl 8"); - } - mList.smoothScrollBy(distance, duration); - } - - @SuppressLint("NewApi") - public void smoothScrollByOffset(int offset) { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { - throw new ApiLevelTooLowException("requires api lvl 11"); - } - mList.smoothScrollByOffset(offset); - } - - @SuppressLint("NewApi") - public void smoothScrollToPosition(int position) { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { - mList.smoothScrollToPosition(position); - } else { - int offset = mAdapter == null ? 0 : getHeaderOverlap(position); - mList.smoothScrollToPositionFromTop(position, offset); - } - } - - @SuppressLint("NewApi") - public void smoothScrollToPosition(int position, int boundPosition) { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.FROYO) { - throw new ApiLevelTooLowException("requires api lvl 8"); - } - mList.smoothScrollToPosition(position, boundPosition); - } - - @SuppressLint("NewApi") - public void smoothScrollToPositionFromTop(int position, int offset) { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { - throw new ApiLevelTooLowException("requires api lvl 11"); - } - offset += mAdapter == null ? 0 : getHeaderOverlap(position); - mList.smoothScrollToPositionFromTop(position, offset); - } - - @SuppressLint("NewApi") - public void smoothScrollToPositionFromTop(int position, int offset, int duration) { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { - throw new ApiLevelTooLowException("requires api lvl 11"); - } - offset += mAdapter == null ? 0 : getHeaderOverlap(position); - mList.smoothScrollToPositionFromTop(position, offset, duration); - } - - public void setSelection(int position) { - mList.setSelection(position); - } - - public void setSelectionAfterHeaderView() { - mList.setSelectionAfterHeaderView(); - } - - public void setSelectionFromTop(int position, int y) { - mList.setSelectionFromTop(position, y); - } - - public void setSelector(Drawable sel) { - mList.setSelector(sel); - } - - public void setSelector(int resID) { - mList.setSelector(resID); - } - - public int getFirstVisiblePosition() { - return mList.getFirstVisiblePosition(); - } - - public int getLastVisiblePosition() { - return mList.getLastVisiblePosition(); - } - - public void setChoiceMode(int choiceMode) { - mList.setChoiceMode(choiceMode); - } - - public void setItemChecked(int position, boolean value) { - mList.setItemChecked(position, value); - } - - @SuppressLint("NewApi") - public int getCheckedItemCount() { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { - throw new ApiLevelTooLowException("requires api lvl 11"); - } - return mList.getCheckedItemCount(); - } - - @SuppressLint("NewApi") - public long[] getCheckedItemIds() { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.FROYO) { - throw new ApiLevelTooLowException("requires api lvl 8"); - } - return mList.getCheckedItemIds(); - } - - public int getCheckedItemPosition() { - return mList.getCheckedItemPosition(); - } - - public SparseBooleanArray getCheckedItemPositions() { - return mList.getCheckedItemPositions(); - } + public void setEmptyView(View v) { + mList.setEmptyView(v); + } + + public View getEmptyView() { + return mList.getEmptyView(); + } + + @TargetApi(Build.VERSION_CODES.FROYO) + public void smoothScrollBy(int distance, int duration) { + requireSdkVersion(Build.VERSION_CODES.FROYO); + mList.smoothScrollBy(distance, duration); + } + + @TargetApi(Build.VERSION_CODES.HONEYCOMB) + public void smoothScrollByOffset(int offset) { + requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); + mList.smoothScrollByOffset(offset); + } + + @TargetApi(Build.VERSION_CODES.HONEYCOMB) + public void smoothScrollToPosition(int position) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { + mList.smoothScrollToPosition(position); + } else { + int offset = mAdapter == null ? 0 : getHeaderOverlap(position); + mList.smoothScrollToPositionFromTop(position, offset); + } + } + + @TargetApi(Build.VERSION_CODES.FROYO) + public void smoothScrollToPosition(int position, int boundPosition) { + requireSdkVersion(Build.VERSION_CODES.FROYO); + mList.smoothScrollToPosition(position, boundPosition); + } + + @TargetApi(Build.VERSION_CODES.HONEYCOMB) + public void smoothScrollToPositionFromTop(int position, int offset) { + requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); + offset += mAdapter == null ? 0 : getHeaderOverlap(position); + mList.smoothScrollToPositionFromTop(position, offset); + } + + @TargetApi(Build.VERSION_CODES.HONEYCOMB) + public void smoothScrollToPositionFromTop(int position, int offset, int duration) { + requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); + offset += mAdapter == null ? 0 : getHeaderOverlap(position); + mList.smoothScrollToPositionFromTop(position, offset, duration); + } + + public void setSelection(int position) { + mList.setSelection(position); + } + + public void setSelectionAfterHeaderView() { + mList.setSelectionAfterHeaderView(); + } + + public void setSelectionFromTop(int position, int y) { + mList.setSelectionFromTop(position, y); + } + + public void setSelector(Drawable sel) { + mList.setSelector(sel); + } + + public void setSelector(int resID) { + mList.setSelector(resID); + } + + public int getFirstVisiblePosition() { + return mList.getFirstVisiblePosition(); + } + + public int getLastVisiblePosition() { + return mList.getLastVisiblePosition(); + } + + @TargetApi(Build.VERSION_CODES.HONEYCOMB) + public void setChoiceMode(int choiceMode) { + requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); + mList.setChoiceMode(choiceMode); + } + + @TargetApi(Build.VERSION_CODES.HONEYCOMB) + public void setItemChecked(int position, boolean value) { + requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); + mList.setItemChecked(position, value); + } + + @TargetApi(Build.VERSION_CODES.HONEYCOMB) + public int getCheckedItemCount() { + requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); + return mList.getCheckedItemCount(); + } + + @TargetApi(Build.VERSION_CODES.HONEYCOMB) + public long[] getCheckedItemIds() { + requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); + return mList.getCheckedItemIds(); + } + + @TargetApi(Build.VERSION_CODES.HONEYCOMB) + public int getCheckedItemPosition() { + requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); + return mList.getCheckedItemPosition(); + } + + @TargetApi(Build.VERSION_CODES.HONEYCOMB) + public SparseBooleanArray getCheckedItemPositions() { + requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); + return mList.getCheckedItemPositions(); + } public int getCount() { return mList.getCount(); @@ -749,4 +747,10 @@ public int getPaddingBottom() { return mPaddingBottom; } + private void requireSdkVersion(int versionCode) { + if (Build.VERSION.SDK_INT < versionCode) { + throw new ApiLevelTooLowException(versionCode); + } + } + } From 95bb3fc2ef471dd86589e31c81409e7fdda8ebbf Mon Sep 17 00:00:00 2001 From: Christian Becker Date: Mon, 16 Sep 2013 14:05:18 +0200 Subject: [PATCH 26/90] Fixed condition for setChoiceMode Honeycomb should be included, too. --- .../components/stickylistheaders/StickyListHeadersListView.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java index f7f93045..8ff0adcc 100644 --- a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java @@ -136,7 +136,7 @@ public StickyListHeadersListView(Context context, AttributeSet attrs, int defSty } mList.setCacheColorHint(a.getColor(R.styleable.StickyListHeadersListView_android_cacheColorHint, mList.getCacheColorHint())); - if (Build.VERSION.SDK_INT > Build.VERSION_CODES.HONEYCOMB) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { mList.setChoiceMode(a.getInt(R.styleable.StickyListHeadersListView_android_choiceMode, mList.getChoiceMode())); } From f1239da52bc39226ff0734a89e060f967e10fc34 Mon Sep 17 00:00:00 2001 From: Isaac Seymour Date: Mon, 16 Sep 2013 13:26:30 +0100 Subject: [PATCH 27/90] Fixed NPE when no OnHeaderClickListener set --- .../stickylistheaders/StickyListHeadersListView.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java index f7f93045..0e2e71cc 100644 --- a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java @@ -293,8 +293,9 @@ private void swapHeader(View newHeader) { @Override public void onClick(View v) { - mOnHeaderClickListener.onHeaderClick(StickyListHeadersListView.this, mHeader, mHeaderPosition, - mHeaderId, true); + if(mOnHeaderClickListener != null) + mOnHeaderClickListener.onHeaderClick(StickyListHeadersListView.this, mHeader, mHeaderPosition, + mHeaderId, true); } }); } From 10b1a8d57aa8bf4b6d4702fed3005310d0a0f13c Mon Sep 17 00:00:00 2001 From: Christian Becker Date: Tue, 17 Sep 2013 14:58:34 +0200 Subject: [PATCH 28/90] Make use of the SectionIndexerAdapterWrapper: If an adapter provides sections with a SecionIndexer, the wrapper Adapter should provides those sections, too. --- .../StickyListHeadersListView.java | 87 +++++++++++-------- .../test/TestBaseAdapter.java | 64 +++++++++++++- 2 files changed, 112 insertions(+), 39 deletions(-) diff --git a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java index 7e3579a7..5c497f59 100644 --- a/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/com/emilsjolander/components/stickylistheaders/StickyListHeadersListView.java @@ -16,6 +16,7 @@ import android.widget.AdapterView.OnItemClickListener; import android.widget.FrameLayout; import android.widget.ListView; +import android.widget.SectionIndexer; import com.emilsjolander.components.stickylistheaders.WrapperViewList.LifeCycleListener; @@ -284,21 +285,23 @@ private void updateHeader(int firstVisiblePosition) { } private void swapHeader(View newHeader) { - if (mHeader != null) { - removeView(mHeader); - } - mHeader = newHeader; - addView(mHeader); - mHeader.setOnClickListener(new OnClickListener() { - - @Override - public void onClick(View v) { - if(mOnHeaderClickListener != null) - mOnHeaderClickListener.onHeaderClick(StickyListHeadersListView.this, mHeader, mHeaderPosition, - mHeaderId, true); - } - }); - } + if (mHeader != null) { + removeView(mHeader); + } + mHeader = newHeader; + addView(mHeader); + mHeader.setOnClickListener(new OnClickListener() { + + @Override + public void onClick(View v) { + if (mOnHeaderClickListener != null) { + mOnHeaderClickListener.onHeaderClick(StickyListHeadersListView.this, mHeader, mHeaderPosition, + mHeaderId, true); + } + } + + }); + } // hides the headers in the list under the sticky header. // Makes sure the other ones are showing @@ -482,11 +485,11 @@ public View getListChildAt(int index) { public int getListChildCount() { return mList.getChildCount(); } - + /** * Use the method with extreme caution!! * Changing any values on the underlying ListView might break everything. - * + * * @return the ListView backing this view. */ public ListView getWrappedList() { @@ -495,31 +498,35 @@ public ListView getWrappedList() { /* ---------- ListView delegate methods ---------- */ - public void setAdapter(StickyListHeadersAdapter adapter) { - if (adapter == null) { - mList.setAdapter(null); - clearHeader(); - return; - } - if (mAdapter != null) { - mAdapter.unregisterDataSetObserver(mDataSetObserver); - } + public void setAdapter(StickyListHeadersAdapter adapter) { + if (adapter == null) { + mList.setAdapter(null); + clearHeader(); + return; + } + if (mAdapter != null) { + mAdapter.unregisterDataSetObserver(mDataSetObserver); + } - mAdapter = new AdapterWrapper(getContext(), adapter); - mDataSetObserver = new AdapterWrapperDataSetObserver(); - mAdapter.registerDataSetObserver(mDataSetObserver); + if (adapter instanceof SectionIndexer) { + mAdapter = new SectionIndexerAdapterWrapper(getContext(), adapter); + } else { + mAdapter = new AdapterWrapper(getContext(), adapter); + } + mDataSetObserver = new AdapterWrapperDataSetObserver(); + mAdapter.registerDataSetObserver(mDataSetObserver); - if (mOnHeaderClickListener != null) { - mAdapter.setOnHeaderClickListener(new AdapterWrapperHeaderClickHandler()); - } else { - mAdapter.setOnHeaderClickListener(null); - } + if (mOnHeaderClickListener != null) { + mAdapter.setOnHeaderClickListener(new AdapterWrapperHeaderClickHandler()); + } else { + mAdapter.setOnHeaderClickListener(null); + } - mAdapter.setDivider(mDivider, mDividerHeight); + mAdapter.setDivider(mDivider, mDividerHeight); - mList.setAdapter(mAdapter); - clearHeader(); - } + mList.setAdapter(mAdapter); + clearHeader(); + } public StickyListHeadersAdapter getAdapter() { return mAdapter == null ? null : mAdapter.mDelegate; @@ -748,6 +755,10 @@ public int getPaddingBottom() { return mPaddingBottom; } + public void setFastScrollEnabled(boolean fastScrollEnabled) { + mList.setFastScrollEnabled(fastScrollEnabled); + } + private void requireSdkVersion(int versionCode) { if (Build.VERSION.SDK_INT < versionCode) { throw new ApiLevelTooLowException(versionCode); diff --git a/sample/src/com/emilsjolander/components/stickylistheaders/test/TestBaseAdapter.java b/sample/src/com/emilsjolander/components/stickylistheaders/test/TestBaseAdapter.java index 31d01166..6ab1a95b 100644 --- a/sample/src/com/emilsjolander/components/stickylistheaders/test/TestBaseAdapter.java +++ b/sample/src/com/emilsjolander/components/stickylistheaders/test/TestBaseAdapter.java @@ -5,23 +5,56 @@ import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; +import android.widget.SectionIndexer; import android.widget.TextView; import com.emilsjolander.components.stickylistheaders.StickyListHeadersAdapter; +import java.util.ArrayList; + /** * @author Emil Sjölander */ -public class TestBaseAdapter extends BaseAdapter implements StickyListHeadersAdapter { +public class TestBaseAdapter extends BaseAdapter implements + StickyListHeadersAdapter, SectionIndexer { private final Context mContext; private String[] mCountries; + private int[] mSectionIndices; + private Character[] mSectionLetters; private LayoutInflater mInflater; public TestBaseAdapter(Context context) { mContext = context; mInflater = LayoutInflater.from(context); mCountries = context.getResources().getStringArray(R.array.countries); + mSectionIndices = getSectionIndices(); + mSectionLetters = getSectionLetters(); + } + + private int[] getSectionIndices() { + ArrayList sectionIndices = new ArrayList(); + char lastFirstChar = mCountries[0].charAt(0); + sectionIndices.add(0); + for (int i = 1; i < mCountries.length; i++) { + if (mCountries[i].charAt(0) != lastFirstChar) { + lastFirstChar = mCountries[i].charAt(0); + sectionIndices.add(i); + } + } + int[] sections = new int[sectionIndices.size()]; + for (int i = 0; i < sectionIndices.size(); i++) { + sections[i] = sectionIndices.get(i); + } + return sections; + } + + private Character[] getSectionLetters() { + Character[] letters = new Character[mSectionIndices.length]; + for (int i = 0; i < mSectionIndices.length; i++) { + letters[i] = mCountries[mSectionIndices[i]].charAt(0); + } + return letters; } @Override @@ -96,13 +129,42 @@ public long getHeaderId(int position) { return mCountries[position].subSequence(0, 1).charAt(0); } + @Override + public int getPositionForSection(int section) { + if (section >= mSectionIndices.length) { + section = mSectionIndices.length - 1; + } else if (section < 0) { + section = 0; + } + return mSectionIndices[section]; + } + + @Override + public int getSectionForPosition(int position) { + for (int i = 0; i < mSectionIndices.length; i++) { + if (position < mSectionIndices[i]) { + return i - 1; + } + } + return mSectionIndices.length - 1; + } + + @Override + public Object[] getSections() { + return mSectionLetters; + } + public void clear() { mCountries = new String[0]; + mSectionIndices = new int[0]; + mSectionLetters = new Character[0]; notifyDataSetChanged(); } public void restore() { mCountries = mContext.getResources().getStringArray(R.array.countries); + mSectionIndices = getSectionIndices(); + mSectionLetters = getSectionLetters(); notifyDataSetChanged(); } From 8464e65a2e8d7a51f547513a7da47d6a757e8022 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Mon, 23 Sep 2013 20:48:47 +0200 Subject: [PATCH 29/90] refactor package name to a domain i actually own --- library/AndroidManifest.xml | 6 +++--- .../stickylistheaders/AdapterWrapper.java | 2 +- .../ApiLevelTooLowException.java | 2 +- .../CheckableWrapperView.java | 2 +- .../SectionIndexerAdapterWrapper.java | 2 +- .../StickyListHeadersAdapter.java | 2 +- .../StickyListHeadersListView.java | 5 ++--- .../stickylistheaders/WrapperView.java | 2 +- .../stickylistheaders/WrapperViewList.java | 2 +- sample/AndroidManifest.xml | 11 +++++------ sample/build.gradle | 1 - sample/libs/android-support-v4.jar | Bin 0 -> 556198 bytes sample/res/layout/main.xml | 2 +- .../stickylistheaders}/TestActivity.java | 15 ++++++--------- .../stickylistheaders}/TestBaseAdapter.java | 10 +++------- 15 files changed, 27 insertions(+), 37 deletions(-) rename library/src/{com/emilsjolander/components => se/emilsjolander}/stickylistheaders/AdapterWrapper.java (99%) rename library/src/{com/emilsjolander/components => se/emilsjolander}/stickylistheaders/ApiLevelTooLowException.java (81%) rename library/src/{com/emilsjolander/components => se/emilsjolander}/stickylistheaders/CheckableWrapperView.java (91%) rename library/src/{com/emilsjolander/components => se/emilsjolander}/stickylistheaders/SectionIndexerAdapterWrapper.java (92%) rename library/src/{com/emilsjolander/components => se/emilsjolander}/stickylistheaders/StickyListHeadersAdapter.java (95%) rename library/src/{com/emilsjolander/components => se/emilsjolander}/stickylistheaders/StickyListHeadersListView.java (99%) rename library/src/{com/emilsjolander/components => se/emilsjolander}/stickylistheaders/WrapperView.java (98%) rename library/src/{com/emilsjolander/components => se/emilsjolander}/stickylistheaders/WrapperViewList.java (98%) create mode 100644 sample/libs/android-support-v4.jar rename sample/src/{com/emilsjolander/components/stickylistheaders/test => se/emilsjolander/stickylistheaders}/TestActivity.java (84%) rename sample/src/{com/emilsjolander/components/stickylistheaders/test => se/emilsjolander/stickylistheaders}/TestBaseAdapter.java (95%) diff --git a/library/AndroidManifest.xml b/library/AndroidManifest.xml index 105717c9..328dcc65 100644 --- a/library/AndroidManifest.xml +++ b/library/AndroidManifest.xml @@ -1,8 +1,8 @@ + package="se.emilsjolander.stickylistheaders" + android:versionCode="2" + android:versionName="2.0" > + package="se.emilsjolander.stickylistheaders" + android:versionCode="2" + android:versionName="2.0"> + android:supportsRtl="true"> diff --git a/sample/build.gradle b/sample/build.gradle index abbb5453..fc087c17 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -6,7 +6,6 @@ repositories { dependencies { compile project(':library') compile 'com.android.support:support-v4:18.0.0' - compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar' } android { diff --git a/sample/libs/android-support-v4.jar b/sample/libs/android-support-v4.jar new file mode 100644 index 0000000000000000000000000000000000000000..cf12d2839dc5ffe618b0233f0c30e681e8b9b0f2 GIT binary patch literal 556198 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

%-;htggoJsE4z=kY_wUkKP#dr`R*fgX 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 z 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%0AE24Q2KLTDEOET78(M9~)VXAT0 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 F{2yd - Date: Mon, 23 Sep 2013 20:52:12 +0200 Subject: [PATCH 30/90] updated readme to reflect package name changes --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 43bb5e65..6bb62bb4 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ In the following dialog navigate to StickyListHeaders which you cloned to your c ###Code Ok lets start with your activities or fragments xml file. It might look something like this. ```xml - @@ -127,6 +127,8 @@ public class MyAdapter extends BaseAdapter implements StickyListHeadersAdapter { That's it! Look through the API docs below to get know about things to customize and if you have any problems getting started please open an issue as it probably means the getting started guide need some improvement! ###Upgrading to version 2.x +First of all the package name has changed from `com.emilsjolander.components.stickylistheaders` -> `se.emilsjolander.stickylistheaders` so update all your imports and xml files using StickyListHeaders! + If you are Upgrading from a version prior to 2.x you might run into the following problems. 1. `StickyListHeadersListView` is no longer a `ListView` subclass. This means that it cannot be passed into a method expecting a ListView. You can retrieve an instance of the `ListView` via `getWrappedList()` but use this with caution as things will probably break if you start setting things directly on that list. 2. Because `StickyListHeadersListView` is no longer a `ListView` it does not support all the methods. I have implemented delegate methods for all the usual methods and gladly accept pull requests for more. From 80b1e67e79e76e4bc6a0017377f3d6f3961be582 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Tue, 24 Sep 2013 10:38:26 +0200 Subject: [PATCH 31/90] Update gradle.properties --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index a40f3f73..26702269 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ VERSION_NAME=2.0.0-SNAPSHOT VERSION_CODE=72 -GROUP=com.emilsjolander.stickylistheaders +GROUP=se.emilsjolander.stickylistheaders POM_DESCRIPTION=A small android library that makes it easy to make lists with section headers that stick to the top until a new section header comes along. POM_URL=https://github.com/emilsjolander/StickyListHeaders From f5317115cbd9de14aa3d146b017a0ea14ddb1375 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Tue, 24 Sep 2013 21:50:47 +0200 Subject: [PATCH 32/90] added project properties to library and sample for painless importing into eclipse --- library/project.properties | 15 +++++++++++++++ sample/project.properties | 15 +++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 library/project.properties create mode 100644 sample/project.properties diff --git a/library/project.properties b/library/project.properties new file mode 100644 index 00000000..1b8c5a34 --- /dev/null +++ b/library/project.properties @@ -0,0 +1,15 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must be checked in Version Control Systems. +# +# To customize properties used by the Ant build system edit +# "ant.properties", and override values to adapt the script to your +# project structure. +# +# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): +#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt + +# Project target. +target=android-18 +android.library=true diff --git a/sample/project.properties b/sample/project.properties new file mode 100644 index 00000000..7143bfdb --- /dev/null +++ b/sample/project.properties @@ -0,0 +1,15 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must be checked in Version Control Systems. +# +# To customize properties used by the Ant build system edit +# "ant.properties", and override values to adapt the script to your +# project structure. +# +# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): +#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt + +# Project target. +target=android-18 +android.library.reference.1=../library From 75a54ee59591da46a3a594029203b174f59477f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Wed, 25 Sep 2013 21:55:13 +0200 Subject: [PATCH 33/90] changed gradle maven publish script to use environment variables for username and passsword --- maven_push.gradle | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/maven_push.gradle b/maven_push.gradle index 9d479e67..c3833e40 100644 --- a/maven_push.gradle +++ b/maven_push.gradle @@ -1,7 +1,10 @@ apply plugin: 'maven' apply plugin: 'signing' -def sonatypeRepositoryUrl +ENV = System.getenv() +USERNAME = ENV['SONATYPE_USERNAME'] +PASSWORD = ENV['SONATYPE_PASSWORD'] + if (isReleaseBuild()) { println 'RELEASE BUILD' sonatypeRepositoryUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2/" @@ -19,7 +22,7 @@ afterEvaluate { project -> pom.artifactId = POM_ARTIFACT_ID repository(url: sonatypeRepositoryUrl) { - authentication(userName: nexusUsername, password: nexusPassword) + authentication(userName: USERNAME, password: PASSWORD) } pom.project { From e386b4c5f122e4205f4b12b87d3a05ad9ca199b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Wed, 25 Sep 2013 22:06:11 +0200 Subject: [PATCH 34/90] added gradle dependency to readme --- README.md | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 6bb62bb4..310c0748 100644 --- a/README.md +++ b/README.md @@ -15,9 +15,17 @@ Goal The goal of this project is to deliver a high performance replacement to `ListView`. You should with minimal effort and time be able to add section headers to a list. This should be done via a simple to use API without any special features. This library will always priorities general use cases over special ones. This means that the library will add very few public methods to the standard `ListView` and will not try to work for every use case. While I will want to support even narrow use cases I will not do so if it compromises the API or any other feature. -Getting started +Installing --------------- -###Installing the library +###Gradle +Add the following gradle dependency exchanging `2.x.x` for the latest release. +```groovy +dependencies { + compile 'se.emilsjolander:stickylistheaders:2.x.x@aar' +} +``` + +###Cloning First of all you will have to clone the library. ```shell git clone https://github.com/emilsjolander/StickyListHeaders.git @@ -30,8 +38,8 @@ File -> Import Project ... ``` In the following dialog navigate to StickyListHeaders which you cloned to your computer in the previous steps and select the `build.gradle`. - -###Code +Getting Started +--------------- Ok lets start with your activities or fragments xml file. It might look something like this. ```xml `se.emilsjolander.stickylistheaders` so update all your imports and xml files using StickyListHeaders! If you are Upgrading from a version prior to 2.x you might run into the following problems. From bfc9dc2281ef13c26ec0fb9733e6d9d1cb9610a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Wed, 25 Sep 2013 22:17:47 +0200 Subject: [PATCH 35/90] finished version 2.0.0 --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 26702269..55ae6d20 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ -VERSION_NAME=2.0.0-SNAPSHOT -VERSION_CODE=72 +VERSION_NAME=2.0.1-SNAPSHOT +VERSION_CODE=74 GROUP=se.emilsjolander.stickylistheaders POM_DESCRIPTION=A small android library that makes it easy to make lists with section headers that stick to the top until a new section header comes along. From 7bb7057520d933da52172191fd35d86edf94e50f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Wed, 25 Sep 2013 22:23:31 +0200 Subject: [PATCH 36/90] fixed some readme formatting --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 310c0748..d5df2f0f 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,8 @@ public class MyAdapter extends BaseAdapter implements StickyListHeadersAdapter { return position; } - @Override public View getView(int position, View convertView, ViewGroup parent) { + @Override + public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { @@ -99,7 +100,8 @@ public class MyAdapter extends BaseAdapter implements StickyListHeadersAdapter { return convertView; } - @Override public View getHeaderView(int position, View convertView, ViewGroup parent) { + @Override + public View getHeaderView(int position, View convertView, ViewGroup parent) { HeaderViewHolder holder; if (convertView == null) { holder = new HeaderViewHolder(); From dc930d017f86f066d77433d5b86e8ee683a38dac Mon Sep 17 00:00:00 2001 From: Kevin Lee Date: Mon, 7 Oct 2013 00:30:51 -0700 Subject: [PATCH 37/90] Fix TargetAPI settings from ListView delegates --- .../StickyListHeadersListView.java | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java index 9cd2fed0..3b1ea17d 100644 --- a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java @@ -605,7 +605,7 @@ public void smoothScrollByOffset(int offset) { mList.smoothScrollByOffset(offset); } - @TargetApi(Build.VERSION_CODES.HONEYCOMB) + @TargetApi(Build.VERSION_CODES.FROYO) public void smoothScrollToPosition(int position) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { mList.smoothScrollToPosition(position); @@ -663,15 +663,11 @@ public int getLastVisiblePosition() { return mList.getLastVisiblePosition(); } - @TargetApi(Build.VERSION_CODES.HONEYCOMB) public void setChoiceMode(int choiceMode) { - requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); mList.setChoiceMode(choiceMode); } - @TargetApi(Build.VERSION_CODES.HONEYCOMB) public void setItemChecked(int position, boolean value) { - requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); mList.setItemChecked(position, value); } @@ -681,21 +677,17 @@ public int getCheckedItemCount() { return mList.getCheckedItemCount(); } - @TargetApi(Build.VERSION_CODES.HONEYCOMB) + @TargetApi(Build.VERSION_CODES.FROYO) public long[] getCheckedItemIds() { - requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); + requireSdkVersion(Build.VERSION_CODES.FROYO); return mList.getCheckedItemIds(); } - @TargetApi(Build.VERSION_CODES.HONEYCOMB) public int getCheckedItemPosition() { - requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); return mList.getCheckedItemPosition(); } - @TargetApi(Build.VERSION_CODES.HONEYCOMB) public SparseBooleanArray getCheckedItemPositions() { - requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); return mList.getCheckedItemPositions(); } From cd8068736ceff23f4506c5add929d1b1fd07c894 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Edstr=C3=B6m?= Date: Tue, 15 Oct 2013 22:31:55 +0200 Subject: [PATCH 38/90] Reveal getPositionForView(View) --- .../stickylistheaders/StickyListHeadersListView.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java index 3b1ea17d..c7ebeb0a 100644 --- a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java @@ -756,4 +756,8 @@ private void requireSdkVersion(int versionCode) { } } + public int getPositionForView(View view){ + return mList.getPositionForView(view); + } + } From ad008696a12669f8716f8d6e7d1be6baa3a27ec9 Mon Sep 17 00:00:00 2001 From: meredrica Date: Wed, 16 Oct 2013 13:18:02 +0200 Subject: [PATCH 39/90] adds files that are created by android --- library/build.xml | 92 ++++++++++++++++++++++++++++++++++++ library/proguard-project.txt | 20 ++++++++ 2 files changed, 112 insertions(+) create mode 100644 library/build.xml create mode 100644 library/proguard-project.txt diff --git a/library/build.xml b/library/build.xml new file mode 100644 index 00000000..2f6f323a --- /dev/null +++ b/library/build.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/library/proguard-project.txt b/library/proguard-project.txt new file mode 100644 index 00000000..f2fe1559 --- /dev/null +++ b/library/proguard-project.txt @@ -0,0 +1,20 @@ +# To enable ProGuard in your project, edit project.properties +# to define the proguard.config property as described in that file. +# +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in ${sdk.dir}/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the ProGuard +# include property in project.properties. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} From 367c0ef20e1e49636b4fff121bb0c1416bcf0ebf Mon Sep 17 00:00:00 2001 From: yaming116 Date: Wed, 16 Oct 2013 21:22:38 +0800 Subject: [PATCH 40/90] Update StickyListHeadersListView.java fix when use `android:dividerHeight="0dp"` ```java Caused by: java.lang.NumberFormatException: Invalid int: ".0dip" ``` --- .../stickylistheaders/StickyListHeadersListView.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java index c7ebeb0a..6891e87b 100644 --- a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java @@ -155,7 +155,7 @@ public StickyListHeadersListView(Context context, AttributeSet attrs, int defSty if (divider != null) { mDivider = divider; } - mDividerHeight = a.getInt(R.styleable.StickyListHeadersListView_android_dividerHeight, mDividerHeight); + mDividerHeight = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_dividerHeight, 0); // StickyListHeaders attributes mAreHeadersSticky = a.getBoolean(R.styleable.StickyListHeadersListView_hasStickyHeaders, true); From e147dc934a884bda246b0cb2d56ac5689a08e4c3 Mon Sep 17 00:00:00 2001 From: Christian Becker Date: Wed, 16 Oct 2013 15:59:16 +0200 Subject: [PATCH 41/90] Use correct default value for dividerHeight when not present in xml --- .../stickylistheaders/StickyListHeadersListView.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java index 6891e87b..23306530 100644 --- a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java @@ -155,7 +155,7 @@ public StickyListHeadersListView(Context context, AttributeSet attrs, int defSty if (divider != null) { mDivider = divider; } - mDividerHeight = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_dividerHeight, 0); + mDividerHeight = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_dividerHeight, mDividerHeight); // StickyListHeaders attributes mAreHeadersSticky = a.getBoolean(R.styleable.StickyListHeadersListView_hasStickyHeaders, true); From c5bc325f243029782d214a159b9cc79a9c7529cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Fri, 18 Oct 2013 19:18:49 +0200 Subject: [PATCH 42/90] Fixed #187 If the header supplies illegal layout params we must fix them. Match parent becomes wrap content. Because the standard layout params of a framelayout are match parent this bug occurred. --- .../stickylistheaders/StickyListHeadersListView.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java index 23306530..b3105366 100644 --- a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java @@ -12,6 +12,7 @@ import android.util.AttributeSet; import android.util.SparseBooleanArray; import android.view.View; +import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.AbsListView.OnScrollListener; import android.widget.AdapterView.OnItemClickListener; @@ -26,7 +27,7 @@ * 2. It used to be a ListView subclass and i did not was to change to * name causing compatibility errors. * - * @author Emil Sjölander + * @author Emil Sjšlander */ public class StickyListHeadersListView extends FrameLayout { @@ -244,6 +245,12 @@ private void updateHeader(int firstVisiblePosition) { } swapHeader(header); } + + ViewGroup.LayoutParams lp = mHeader.getLayoutParams(); + if (lp.height == ViewGroup.LayoutParams.MATCH_PARENT) { + lp.height = ViewGroup.LayoutParams.WRAP_CONTENT; + mHeader.setLayoutParams(lp); + } // measure the header final int width = getWidth(); @@ -605,7 +612,8 @@ public void smoothScrollByOffset(int offset) { mList.smoothScrollByOffset(offset); } - @TargetApi(Build.VERSION_CODES.FROYO) + @SuppressLint("NewApi") + @TargetApi(Build.VERSION_CODES.FROYO) public void smoothScrollToPosition(int position) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { mList.smoothScrollToPosition(position); From f307db6f07a31618c2833de9dea62a6982a1029b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Fri, 18 Oct 2013 19:28:53 +0200 Subject: [PATCH 43/90] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d5df2f0f..5151fc36 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ The goal of this project is to deliver a high performance replacement to `ListVi Installing --------------- ###Gradle -Add the following gradle dependency exchanging `2.x.x` for the latest release. +Add the following gradle dependency exchanging `2.x.x` for the latest release. NOT YET READY! ```groovy dependencies { compile 'se.emilsjolander:stickylistheaders:2.x.x@aar' From 9da4061d00e3a052b23df0a363a73b53a3c7b585 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Fri, 18 Oct 2013 19:33:20 +0200 Subject: [PATCH 44/90] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5151fc36..1a324a2e 100644 --- a/README.md +++ b/README.md @@ -175,7 +175,7 @@ public interface OnHeaderClickListener { } ``` -Here are two methods added to the API for inspecting the children of the underlying `ListView`. +Here are two methods added to the API for inspecting the children of the underlying `ListView`. I could not override the normal `getChildAt()` and `getChildCount()` methods as that would mess up the underlying measurement system of the `FrameLayout` wrapping the `ListView`. ```java public View getListChildAt(int index); public int getListChildCount(); From 18b463bcac3a60e83a5ebfbdffcebf4ce95508de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Fri, 18 Oct 2013 19:49:36 +0200 Subject: [PATCH 45/90] fixes #188 --- .../stickylistheaders/StickyListHeadersListView.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java index b3105366..2b3dfe89 100644 --- a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java @@ -16,6 +16,7 @@ import android.widget.AbsListView; import android.widget.AbsListView.OnScrollListener; import android.widget.AdapterView.OnItemClickListener; +import android.widget.AdapterView.OnItemLongClickListener; import android.widget.FrameLayout; import android.widget.ListView; import android.widget.SectionIndexer; @@ -568,6 +569,10 @@ public void setOnItemClickListener(OnItemClickListener listener) { mList.setOnItemClickListener(listener); } + public void setOnItemLongClickListener(OnItemLongClickListener listener) { + mList.setOnItemLongClickListener(listener); + } + public void addHeaderView(View v) { mList.addHeaderView(v); } From 0c7ccc5d06a22355c61cc96f36af6937f7fa0c35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Fri, 18 Oct 2013 21:59:55 +0200 Subject: [PATCH 46/90] Fixes #185 --- .../StickyListHeadersListView.java | 562 ++++++++++-------- 1 file changed, 321 insertions(+), 241 deletions(-) diff --git a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java index 2b3dfe89..75a32f1e 100644 --- a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java @@ -21,20 +21,19 @@ import android.widget.ListView; import android.widget.SectionIndexer; - /** - * Even though this is a FrameLayout subclass we it is called a - * ListView. This is because of 2 reasons. 1. It acts like as ListView - * 2. It used to be a ListView subclass and i did not was to change to - * name causing compatibility errors. - * + * Even though this is a FrameLayout subclass we it is called a ListView. This + * is because of 2 reasons. 1. It acts like as ListView 2. It used to be a + * ListView subclass and i did not was to change to name causing compatibility + * errors. + * * @author Emil Sjšlander */ public class StickyListHeadersListView extends FrameLayout { public interface OnHeaderClickListener { - public void onHeaderClick(StickyListHeadersListView l, View header, int itemPosition, long headerId, - boolean currentlySticky); + public void onHeaderClick(StickyListHeadersListView l, View header, + int itemPosition, long headerId, boolean currentlySticky); } /* --- Children --- */ @@ -74,8 +73,9 @@ public StickyListHeadersListView(Context context, AttributeSet attrs) { this(context, attrs, 0); } - @TargetApi(Build.VERSION_CODES.HONEYCOMB) - public StickyListHeadersListView(Context context, AttributeSet attrs, int defStyle) { + @TargetApi(Build.VERSION_CODES.HONEYCOMB) + public StickyListHeadersListView(Context context, AttributeSet attrs, + int defStyle) { super(context, attrs, defStyle); // Initialize the list @@ -93,39 +93,58 @@ public StickyListHeadersListView(Context context, AttributeSet attrs, int defSty addView(mList); if (attrs != null) { - TypedArray a = context.getTheme() - .obtainStyledAttributes(attrs, R.styleable.StickyListHeadersListView, 0, 0); + TypedArray a = context.getTheme().obtainStyledAttributes(attrs, + R.styleable.StickyListHeadersListView, 0, 0); try { // Android attributes if (a.hasValue(R.styleable.StickyListHeadersListView_android_padding)) { - int padding = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_padding, 0); + int padding = a + .getDimensionPixelSize( + R.styleable.StickyListHeadersListView_android_padding, + 0); mPaddingLeft = padding; mPaddingTop = padding; mPaddingRight = padding; mPaddingBottom = padding; } else { mPaddingLeft = a - .getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_paddingLeft, 0); - mPaddingTop = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_paddingTop, 0); - mPaddingRight = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_paddingRight, - 0); - mPaddingBottom = a.getDimensionPixelSize( - R.styleable.StickyListHeadersListView_android_paddingBottom, 0); + .getDimensionPixelSize( + R.styleable.StickyListHeadersListView_android_paddingLeft, + 0); + mPaddingTop = a + .getDimensionPixelSize( + R.styleable.StickyListHeadersListView_android_paddingTop, + 0); + mPaddingRight = a + .getDimensionPixelSize( + R.styleable.StickyListHeadersListView_android_paddingRight, + 0); + mPaddingBottom = a + .getDimensionPixelSize( + R.styleable.StickyListHeadersListView_android_paddingBottom, + 0); } - setPadding(mPaddingLeft, mPaddingTop, mPaddingRight, mPaddingBottom); + setPadding(mPaddingLeft, mPaddingTop, mPaddingRight, + mPaddingBottom); // Set clip to padding on the list and reset value to default on // wrapper - mClippingToPadding = a.getBoolean(R.styleable.StickyListHeadersListView_android_clipToPadding, true); + mClippingToPadding = a + .getBoolean( + R.styleable.StickyListHeadersListView_android_clipToPadding, + true); super.setClipToPadding(true); mList.setClipToPadding(mClippingToPadding); // ListView attributes - mList.setFadingEdgeLength(a.getDimensionPixelSize( - R.styleable.StickyListHeadersListView_android_fadingEdgeLength, - mList.getVerticalFadingEdgeLength())); - final int fadingEdge = a.getInt(R.styleable.StickyListHeadersListView_android_requiresFadingEdge, 0); + mList.setFadingEdgeLength(a + .getDimensionPixelSize( + R.styleable.StickyListHeadersListView_android_fadingEdgeLength, + mList.getVerticalFadingEdgeLength())); + final int fadingEdge = a + .getInt(R.styleable.StickyListHeadersListView_android_requiresFadingEdge, + 0); if (fadingEdge == 0x00001000) { mList.setVerticalFadingEdgeEnabled(false); mList.setHorizontalFadingEdgeEnabled(true); @@ -136,33 +155,53 @@ public StickyListHeadersListView(Context context, AttributeSet attrs, int defSty mList.setVerticalFadingEdgeEnabled(false); mList.setHorizontalFadingEdgeEnabled(false); } - mList.setCacheColorHint(a.getColor(R.styleable.StickyListHeadersListView_android_cacheColorHint, - mList.getCacheColorHint())); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { - mList.setChoiceMode(a.getInt(R.styleable.StickyListHeadersListView_android_choiceMode, - mList.getChoiceMode())); - } - mList.setDrawSelectorOnTop(a.getBoolean( - R.styleable.StickyListHeadersListView_android_drawSelectorOnTop, false)); - mList.setFastScrollEnabled(a.getBoolean( - R.styleable.StickyListHeadersListView_android_fastScrollEnabled, mList.isFastScrollEnabled())); - mList.setScrollBarStyle(a.getInt(R.styleable.StickyListHeadersListView_android_scrollbarStyle, 0)); - final Drawable selector = a.getDrawable(R.styleable.StickyListHeadersListView_android_listSelector); + mList.setCacheColorHint(a + .getColor( + R.styleable.StickyListHeadersListView_android_cacheColorHint, + mList.getCacheColorHint())); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { + mList.setChoiceMode(a + .getInt(R.styleable.StickyListHeadersListView_android_choiceMode, + mList.getChoiceMode())); + } + mList.setDrawSelectorOnTop(a + .getBoolean( + R.styleable.StickyListHeadersListView_android_drawSelectorOnTop, + false)); + mList.setFastScrollEnabled(a + .getBoolean( + R.styleable.StickyListHeadersListView_android_fastScrollEnabled, + mList.isFastScrollEnabled())); + mList.setScrollBarStyle(a + .getInt(R.styleable.StickyListHeadersListView_android_scrollbarStyle, + 0)); + final Drawable selector = a + .getDrawable(R.styleable.StickyListHeadersListView_android_listSelector); if (selector != null) { mList.setSelector(selector); } - mList.setScrollingCacheEnabled(a.getBoolean( - R.styleable.StickyListHeadersListView_android_scrollingCache, mList.isScrollingCacheEnabled())); - final Drawable divider = a.getDrawable(R.styleable.StickyListHeadersListView_android_divider); + mList.setScrollingCacheEnabled(a + .getBoolean( + R.styleable.StickyListHeadersListView_android_scrollingCache, + mList.isScrollingCacheEnabled())); + final Drawable divider = a + .getDrawable(R.styleable.StickyListHeadersListView_android_divider); if (divider != null) { mDivider = divider; } - mDividerHeight = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_dividerHeight, mDividerHeight); + mDividerHeight = a + .getDimensionPixelSize( + R.styleable.StickyListHeadersListView_android_dividerHeight, + mDividerHeight); // StickyListHeaders attributes - mAreHeadersSticky = a.getBoolean(R.styleable.StickyListHeadersListView_hasStickyHeaders, true); - mIsDrawingListUnderStickyHeader = a.getBoolean( - R.styleable.StickyListHeadersListView_isDrawingListUnderStickyHeader, true); + mAreHeadersSticky = a.getBoolean( + R.styleable.StickyListHeadersListView_hasStickyHeaders, + true); + mIsDrawingListUnderStickyHeader = a + .getBoolean( + R.styleable.StickyListHeadersListView_isDrawingListUnderStickyHeader, + true); } finally { a.recycle(); @@ -171,14 +210,36 @@ public StickyListHeadersListView(Context context, AttributeSet attrs, int defSty } @Override - protected void onLayout(boolean changed, int left, int top, int right, int bottom) { - mList.layout(mPaddingLeft, 0, mList.getMeasuredWidth() + mPaddingLeft, getHeight()); + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + measureHeader(); + } + + private void measureHeader() { if (mHeader != null) { - MarginLayoutParams lp = (MarginLayoutParams) mHeader.getLayoutParams(); - int headerTop = lp.topMargin + (mClippingToPadding ? mPaddingTop : 0); + final int width = getMeasuredWidth() - mPaddingLeft - mPaddingRight; + final int parentWidthMeasureSpec = MeasureSpec.makeMeasureSpec( + width, MeasureSpec.EXACTLY); + final int parentHeightMeasureSpec = MeasureSpec.makeMeasureSpec(0, + MeasureSpec.UNSPECIFIED); + measureChild(mHeader, parentWidthMeasureSpec, + parentHeightMeasureSpec); + } + } + + @Override + protected void onLayout(boolean changed, int left, int top, int right, + int bottom) { + mList.layout(0, 0, mList.getMeasuredWidth(), getHeight()); + if (mHeader != null) { + MarginLayoutParams lp = (MarginLayoutParams) mHeader + .getLayoutParams(); + int headerTop = lp.topMargin + + (mClippingToPadding ? mPaddingTop : 0); // The left parameter must for some reason be set to 0. // I think it should be set to mPaddingLeft but apparently not - mHeader.layout(0, headerTop, mHeader.getMeasuredWidth(), headerTop + mHeader.getMeasuredHeight()); + mHeader.layout(mPaddingLeft, headerTop, mHeader.getMeasuredWidth() + + mPaddingLeft, headerTop + mHeader.getMeasuredHeight()); } } @@ -219,11 +280,13 @@ private void updateOrClearHeader(int firstVisiblePosition) { // It is not a mistake to call getFirstVisiblePosition() here. // Most of the time getFixedFirstVisibleItem() should be called // but that does not work great together with getChildAt() - final boolean isFirstViewBelowTop = mList.getFirstVisiblePosition() == 0 && mList.getChildAt(0).getTop() > 0; + final boolean isFirstViewBelowTop = mList.getFirstVisiblePosition() == 0 + && mList.getChildAt(0).getTop() > 0; final boolean isFirstVisibleItemOutsideAdapterRange = realFirstVisibleItem > adapterCount - 1 || realFirstVisibleItem < 0; final boolean doesListHaveChildren = mList.getChildCount() != 0; - if (!doesListHaveChildren || isFirstVisibleItemOutsideAdapterRange || isFirstViewBelowTop) { + if (!doesListHaveChildren || isFirstVisibleItemOutsideAdapterRange + || isFirstViewBelowTop) { clearHeader(); return; } @@ -239,25 +302,22 @@ private void updateHeader(int firstVisiblePosition) { final long headerId = mAdapter.getHeaderId(firstVisiblePosition); if (mHeaderId == null || mHeaderId != headerId) { mHeaderId = headerId; - final View header = mAdapter.getHeaderView(mHeaderPosition, mHeader, this); + final View header = mAdapter.getHeaderView(mHeaderPosition, + mHeader, this); if (mHeader != header) { if (header == null) { throw new NullPointerException("header may not be null"); } swapHeader(header); } - + ViewGroup.LayoutParams lp = mHeader.getLayoutParams(); if (lp.height == ViewGroup.LayoutParams.MATCH_PARENT) { lp.height = ViewGroup.LayoutParams.WRAP_CONTENT; mHeader.setLayoutParams(lp); } - - // measure the header - final int width = getWidth(); - final int parentWidthMeasureSpec = MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY); - final int parentHeightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); - measureChild(mHeader, parentWidthMeasureSpec, parentHeightMeasureSpec); + + measureHeader(); // Reset mHeaderOffset to null ensuring // that it will be set on the header and @@ -271,12 +331,15 @@ private void updateHeader(int firstVisiblePosition) { // Calculate new header offset // Skip looking at the first view. it never matters because it always // results in a headerOffset = 0 - int headerBottom = mHeader.getMeasuredHeight() + (mClippingToPadding ? mPaddingTop : 0); + int headerBottom = mHeader.getMeasuredHeight() + + (mClippingToPadding ? mPaddingTop : 0); for (int i = 0; i < mList.getChildCount(); i++) { final View child = mList.getChildAt(i); - final boolean doesChildHaveHeader = child instanceof WrapperView && ((WrapperView) child).hasHeader(); + final boolean doesChildHaveHeader = child instanceof WrapperView + && ((WrapperView) child).hasHeader(); final boolean isChildFooter = mList.containsFooterView(child); - if (child.getTop() >= (mClippingToPadding ? mPaddingTop : 0) && (doesChildHaveHeader || isChildFooter)) { + if (child.getTop() >= (mClippingToPadding ? mPaddingTop : 0) + && (doesChildHaveHeader || isChildFooter)) { headerOffset = Math.min(child.getTop() - headerBottom, 0); break; } @@ -285,37 +348,40 @@ private void updateHeader(int firstVisiblePosition) { setHeaderOffet(headerOffset); if (!mIsDrawingListUnderStickyHeader) { - mList.setTopClippingLength(mHeader.getMeasuredHeight() + mHeaderOffset); + mList.setTopClippingLength(mHeader.getMeasuredHeight() + + mHeaderOffset); } updateHeaderVisibilities(); } private void swapHeader(View newHeader) { - if (mHeader != null) { - removeView(mHeader); - } - mHeader = newHeader; - addView(mHeader); - mHeader.setOnClickListener(new OnClickListener() { - - @Override - public void onClick(View v) { - if (mOnHeaderClickListener != null) { - mOnHeaderClickListener.onHeaderClick(StickyListHeadersListView.this, mHeader, mHeaderPosition, - mHeaderId, true); - } - } - - }); - } + if (mHeader != null) { + removeView(mHeader); + } + mHeader = newHeader; + addView(mHeader); + mHeader.setOnClickListener(new OnClickListener() { + + @Override + public void onClick(View v) { + if (mOnHeaderClickListener != null) { + mOnHeaderClickListener.onHeaderClick( + StickyListHeadersListView.this, mHeader, + mHeaderPosition, mHeaderId, true); + } + } + + }); + } // hides the headers in the list under the sticky header. // Makes sure the other ones are showing private void updateHeaderVisibilities() { int top; if (mHeader != null) { - top = mHeader.getMeasuredHeight() + (mHeaderOffset != null ? mHeaderOffset : 0); + top = mHeader.getMeasuredHeight() + + (mHeaderOffset != null ? mHeaderOffset : 0); } else { top = mClippingToPadding ? mPaddingTop : 0; } @@ -349,7 +415,8 @@ private void setHeaderOffet(int offset) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { mHeader.setTranslationY(mHeaderOffset); } else { - MarginLayoutParams params = (MarginLayoutParams) mHeader.getLayoutParams(); + MarginLayoutParams params = (MarginLayoutParams) mHeader + .getLayoutParams(); params.topMargin = mHeaderOffset; mHeader.setLayoutParams(params); } @@ -373,9 +440,11 @@ public void onInvalidated() { private class WrapperListScrollListener implements OnScrollListener { @Override - public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { + public void onScroll(AbsListView view, int firstVisibleItem, + int visibleItemCount, int totalItemCount) { if (mOnScrollListenerDelegate != null) { - mOnScrollListenerDelegate.onScroll(view, firstVisibleItem, visibleItemCount, totalItemCount); + mOnScrollListenerDelegate.onScroll(view, firstVisibleItem, + visibleItemCount, totalItemCount); } updateOrClearHeader(mList.getFixedFirstVisibleItem()); } @@ -383,7 +452,8 @@ public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCoun @Override public void onScrollStateChanged(AbsListView view, int scrollState) { if (mOnScrollListenerDelegate != null) { - mOnScrollListenerDelegate.onScrollStateChanged(view, scrollState); + mOnScrollListenerDelegate.onScrollStateChanged(view, + scrollState); } } @@ -412,17 +482,22 @@ public void onDispatchDrawOccurred(Canvas canvas) { } - private class AdapterWrapperHeaderClickHandler implements AdapterWrapper.OnHeaderClickListener { + private class AdapterWrapperHeaderClickHandler implements + AdapterWrapper.OnHeaderClickListener { @Override public void onHeaderClick(View header, int itemPosition, long headerId) { - mOnHeaderClickListener.onHeaderClick(StickyListHeadersListView.this, header, itemPosition, headerId, false); + mOnHeaderClickListener.onHeaderClick( + StickyListHeadersListView.this, header, itemPosition, + headerId, false); } } private boolean isStartOfSection(int position) { - return position == 0 || mAdapter.getHeaderId(position) == mAdapter.getHeaderId(position - 1); + return position == 0 + || mAdapter.getHeaderId(position) == mAdapter + .getHeaderId(position - 1); } private int getHeaderOverlap(int position) { @@ -431,9 +506,12 @@ private int getHeaderOverlap(int position) { View header = mAdapter.getView(position, null, mList); final int width = getWidth(); - final int parentWidthMeasureSpec = MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY); - final int parentHeightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); - measureChild(header, parentWidthMeasureSpec, parentHeightMeasureSpec); + final int parentWidthMeasureSpec = MeasureSpec.makeMeasureSpec( + width, MeasureSpec.EXACTLY); + final int parentHeightMeasureSpec = MeasureSpec.makeMeasureSpec(0, + MeasureSpec.UNSPECIFIED); + measureChild(header, parentWidthMeasureSpec, + parentHeightMeasureSpec); return header.getMeasuredHeight(); } return 0; @@ -464,7 +542,8 @@ public boolean getAreHeadersSticky() { return areHeadersSticky(); } - public void setDrawingListUnderStickyHeader(boolean drawingListUnderStickyHeader) { + public void setDrawingListUnderStickyHeader( + boolean drawingListUnderStickyHeader) { mIsDrawingListUnderStickyHeader = drawingListUnderStickyHeader; // reset the top clipping length mList.setTopClippingLength(0); @@ -474,7 +553,8 @@ public boolean isDrawingListUnderStickyHeader() { return mIsDrawingListUnderStickyHeader; } - public void setOnHeaderClickListener(OnHeaderClickListener onHeaderClickListener) { + public void setOnHeaderClickListener( + OnHeaderClickListener onHeaderClickListener) { mOnHeaderClickListener = onHeaderClickListener; if (mAdapter != null) { if (mOnHeaderClickListener != null) { @@ -494,9 +574,9 @@ public int getListChildCount() { } /** - * Use the method with extreme caution!! - * Changing any values on the underlying ListView might break everything. - * + * Use the method with extreme caution!! Changing any values on the + * underlying ListView might break everything. + * * @return the ListView backing this view. */ public ListView getWrappedList() { @@ -505,35 +585,35 @@ public ListView getWrappedList() { /* ---------- ListView delegate methods ---------- */ - public void setAdapter(StickyListHeadersAdapter adapter) { - if (adapter == null) { - mList.setAdapter(null); - clearHeader(); - return; - } - if (mAdapter != null) { - mAdapter.unregisterDataSetObserver(mDataSetObserver); - } - - if (adapter instanceof SectionIndexer) { - mAdapter = new SectionIndexerAdapterWrapper(getContext(), adapter); - } else { - mAdapter = new AdapterWrapper(getContext(), adapter); - } - mDataSetObserver = new AdapterWrapperDataSetObserver(); - mAdapter.registerDataSetObserver(mDataSetObserver); - - if (mOnHeaderClickListener != null) { - mAdapter.setOnHeaderClickListener(new AdapterWrapperHeaderClickHandler()); - } else { - mAdapter.setOnHeaderClickListener(null); - } - - mAdapter.setDivider(mDivider, mDividerHeight); - - mList.setAdapter(mAdapter); - clearHeader(); - } + public void setAdapter(StickyListHeadersAdapter adapter) { + if (adapter == null) { + mList.setAdapter(null); + clearHeader(); + return; + } + if (mAdapter != null) { + mAdapter.unregisterDataSetObserver(mDataSetObserver); + } + + if (adapter instanceof SectionIndexer) { + mAdapter = new SectionIndexerAdapterWrapper(getContext(), adapter); + } else { + mAdapter = new AdapterWrapper(getContext(), adapter); + } + mDataSetObserver = new AdapterWrapperDataSetObserver(); + mAdapter.registerDataSetObserver(mDataSetObserver); + + if (mOnHeaderClickListener != null) { + mAdapter.setOnHeaderClickListener(new AdapterWrapperHeaderClickHandler()); + } else { + mAdapter.setOnHeaderClickListener(null); + } + + mAdapter.setDivider(mDivider, mDividerHeight); + + mList.setAdapter(mAdapter); + clearHeader(); + } public StickyListHeadersAdapter getAdapter() { return mAdapter == null ? null : mAdapter.mDelegate; @@ -597,112 +677,113 @@ public int getFooterViewsCount() { return mList.getFooterViewsCount(); } - public void setEmptyView(View v) { - mList.setEmptyView(v); - } + public void setEmptyView(View v) { + mList.setEmptyView(v); + } - public View getEmptyView() { - return mList.getEmptyView(); - } + public View getEmptyView() { + return mList.getEmptyView(); + } - @TargetApi(Build.VERSION_CODES.FROYO) - public void smoothScrollBy(int distance, int duration) { - requireSdkVersion(Build.VERSION_CODES.FROYO); - mList.smoothScrollBy(distance, duration); - } + @TargetApi(Build.VERSION_CODES.FROYO) + public void smoothScrollBy(int distance, int duration) { + requireSdkVersion(Build.VERSION_CODES.FROYO); + mList.smoothScrollBy(distance, duration); + } - @TargetApi(Build.VERSION_CODES.HONEYCOMB) - public void smoothScrollByOffset(int offset) { - requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); - mList.smoothScrollByOffset(offset); - } + @TargetApi(Build.VERSION_CODES.HONEYCOMB) + public void smoothScrollByOffset(int offset) { + requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); + mList.smoothScrollByOffset(offset); + } - @SuppressLint("NewApi") + @SuppressLint("NewApi") @TargetApi(Build.VERSION_CODES.FROYO) - public void smoothScrollToPosition(int position) { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { - mList.smoothScrollToPosition(position); - } else { - int offset = mAdapter == null ? 0 : getHeaderOverlap(position); - mList.smoothScrollToPositionFromTop(position, offset); - } - } - - @TargetApi(Build.VERSION_CODES.FROYO) - public void smoothScrollToPosition(int position, int boundPosition) { - requireSdkVersion(Build.VERSION_CODES.FROYO); - mList.smoothScrollToPosition(position, boundPosition); - } - - @TargetApi(Build.VERSION_CODES.HONEYCOMB) - public void smoothScrollToPositionFromTop(int position, int offset) { - requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); - offset += mAdapter == null ? 0 : getHeaderOverlap(position); - mList.smoothScrollToPositionFromTop(position, offset); - } - - @TargetApi(Build.VERSION_CODES.HONEYCOMB) - public void smoothScrollToPositionFromTop(int position, int offset, int duration) { - requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); - offset += mAdapter == null ? 0 : getHeaderOverlap(position); - mList.smoothScrollToPositionFromTop(position, offset, duration); - } - - public void setSelection(int position) { - mList.setSelection(position); - } - - public void setSelectionAfterHeaderView() { - mList.setSelectionAfterHeaderView(); - } - - public void setSelectionFromTop(int position, int y) { - mList.setSelectionFromTop(position, y); - } - - public void setSelector(Drawable sel) { - mList.setSelector(sel); - } - - public void setSelector(int resID) { - mList.setSelector(resID); - } - - public int getFirstVisiblePosition() { - return mList.getFirstVisiblePosition(); - } - - public int getLastVisiblePosition() { - return mList.getLastVisiblePosition(); - } - - public void setChoiceMode(int choiceMode) { - mList.setChoiceMode(choiceMode); - } - - public void setItemChecked(int position, boolean value) { - mList.setItemChecked(position, value); - } - - @TargetApi(Build.VERSION_CODES.HONEYCOMB) - public int getCheckedItemCount() { - requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); - return mList.getCheckedItemCount(); - } - - @TargetApi(Build.VERSION_CODES.FROYO) - public long[] getCheckedItemIds() { - requireSdkVersion(Build.VERSION_CODES.FROYO); - return mList.getCheckedItemIds(); - } - - public int getCheckedItemPosition() { - return mList.getCheckedItemPosition(); - } - - public SparseBooleanArray getCheckedItemPositions() { - return mList.getCheckedItemPositions(); - } + public void smoothScrollToPosition(int position) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { + mList.smoothScrollToPosition(position); + } else { + int offset = mAdapter == null ? 0 : getHeaderOverlap(position); + mList.smoothScrollToPositionFromTop(position, offset); + } + } + + @TargetApi(Build.VERSION_CODES.FROYO) + public void smoothScrollToPosition(int position, int boundPosition) { + requireSdkVersion(Build.VERSION_CODES.FROYO); + mList.smoothScrollToPosition(position, boundPosition); + } + + @TargetApi(Build.VERSION_CODES.HONEYCOMB) + public void smoothScrollToPositionFromTop(int position, int offset) { + requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); + offset += mAdapter == null ? 0 : getHeaderOverlap(position); + mList.smoothScrollToPositionFromTop(position, offset); + } + + @TargetApi(Build.VERSION_CODES.HONEYCOMB) + public void smoothScrollToPositionFromTop(int position, int offset, + int duration) { + requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); + offset += mAdapter == null ? 0 : getHeaderOverlap(position); + mList.smoothScrollToPositionFromTop(position, offset, duration); + } + + public void setSelection(int position) { + mList.setSelection(position); + } + + public void setSelectionAfterHeaderView() { + mList.setSelectionAfterHeaderView(); + } + + public void setSelectionFromTop(int position, int y) { + mList.setSelectionFromTop(position, y); + } + + public void setSelector(Drawable sel) { + mList.setSelector(sel); + } + + public void setSelector(int resID) { + mList.setSelector(resID); + } + + public int getFirstVisiblePosition() { + return mList.getFirstVisiblePosition(); + } + + public int getLastVisiblePosition() { + return mList.getLastVisiblePosition(); + } + + public void setChoiceMode(int choiceMode) { + mList.setChoiceMode(choiceMode); + } + + public void setItemChecked(int position, boolean value) { + mList.setItemChecked(position, value); + } + + @TargetApi(Build.VERSION_CODES.HONEYCOMB) + public int getCheckedItemCount() { + requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); + return mList.getCheckedItemCount(); + } + + @TargetApi(Build.VERSION_CODES.FROYO) + public long[] getCheckedItemIds() { + requireSdkVersion(Build.VERSION_CODES.FROYO); + return mList.getCheckedItemIds(); + } + + public int getCheckedItemPosition() { + return mList.getCheckedItemPosition(); + } + + public SparseBooleanArray getCheckedItemPositions() { + return mList.getCheckedItemPositions(); + } public int getCount() { return mList.getCount(); @@ -731,12 +812,11 @@ public void setPadding(int left, int top, int right, int bottom) { mPaddingRight = right; mPaddingBottom = bottom; - // Set left/right paddings on the wrapper and top/bottom on the - // list to support the clip to padding flag - super.setPadding(left, 0, right, 0); if (mList != null) { - mList.setPadding(0, top, 0, bottom); + mList.setPadding(left, top, right, bottom); } + super.setPadding(0, 0, 0, 0); + requestLayout(); } @Override @@ -759,18 +839,18 @@ public int getPaddingBottom() { return mPaddingBottom; } - public void setFastScrollEnabled(boolean fastScrollEnabled) { - mList.setFastScrollEnabled(fastScrollEnabled); - } + public void setFastScrollEnabled(boolean fastScrollEnabled) { + mList.setFastScrollEnabled(fastScrollEnabled); + } - private void requireSdkVersion(int versionCode) { - if (Build.VERSION.SDK_INT < versionCode) { - throw new ApiLevelTooLowException(versionCode); - } - } + private void requireSdkVersion(int versionCode) { + if (Build.VERSION.SDK_INT < versionCode) { + throw new ApiLevelTooLowException(versionCode); + } + } - public int getPositionForView(View view){ - return mList.getPositionForView(view); - } + public int getPositionForView(View view) { + return mList.getPositionForView(view); + } } From 48d4edea11f50083f852336679a5996a7cb5a875 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Fri, 18 Oct 2013 22:03:46 +0200 Subject: [PATCH 47/90] Made WrapperView public This will allow developers to get the item and/or header from a view returned by getListChildAt() --- .../stickylistheaders/WrapperView.java | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/library/src/se/emilsjolander/stickylistheaders/WrapperView.java b/library/src/se/emilsjolander/stickylistheaders/WrapperView.java index b1408dc3..f51416c1 100644 --- a/library/src/se/emilsjolander/stickylistheaders/WrapperView.java +++ b/library/src/se/emilsjolander/stickylistheaders/WrapperView.java @@ -14,7 +14,7 @@ * * @author Emil Sjölander */ -class WrapperView extends ViewGroup { +public class WrapperView extends ViewGroup { View mItem; Drawable mDivider; @@ -22,10 +22,22 @@ class WrapperView extends ViewGroup { View mHeader; int mItemTop; - public WrapperView(Context c) { + WrapperView(Context c) { super(c); } + public boolean hasHeader() { + return mHeader != null; + } + + public View getItem() { + return mItem; + } + + public View getHeader() { + return mHeader; + } + void update(View item, View header, Drawable divider, int dividerHeight) { //every wrapperview must have a list item @@ -64,10 +76,6 @@ void update(View item, View header, Drawable divider, int dividerHeight) { } } - boolean hasHeader() { - return mHeader != null; - } - @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int measuredWidth = MeasureSpec.getSize(widthMeasureSpec); From ad78a9f11be76a05802155ec0ae02c9ee12129f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Fri, 18 Oct 2013 22:07:16 +0200 Subject: [PATCH 48/90] Fixes #193 Now a instance of ListView is passed as the parent parameter in getView() instead of a WrapperView --- .../src/se/emilsjolander/stickylistheaders/AdapterWrapper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/src/se/emilsjolander/stickylistheaders/AdapterWrapper.java b/library/src/se/emilsjolander/stickylistheaders/AdapterWrapper.java index 369d7c7b..e67de0db 100644 --- a/library/src/se/emilsjolander/stickylistheaders/AdapterWrapper.java +++ b/library/src/se/emilsjolander/stickylistheaders/AdapterWrapper.java @@ -161,7 +161,7 @@ private boolean previousPositionHasSameHeader(int position) { @Override public WrapperView getView(int position, View convertView, ViewGroup parent) { WrapperView wv = (convertView == null) ? new WrapperView(mContext) : (WrapperView) convertView; - View item = mDelegate.getView(position, wv.mItem, wv); + View item = mDelegate.getView(position, wv.mItem, parent); View header = null; if (previousPositionHasSameHeader(position)) { recycleHeaderIfExists(wv); From 9cc2dcef3f8a7f375c0324e4b1f97bd4c7f315e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Sun, 20 Oct 2013 19:50:03 +0200 Subject: [PATCH 49/90] Create LICENSE --- LICENSE | 191 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 191 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..37ec93a1 --- /dev/null +++ b/LICENSE @@ -0,0 +1,191 @@ +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and +distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright +owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities +that control, are controlled by, or are under common control with that entity. +For the purposes of this definition, "control" means (i) the power, direct or +indirect, to cause the direction or management of such entity, whether by +contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the +outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising +permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including +but not limited to software source code, documentation source, and configuration +files. + +"Object" form shall mean any form resulting from mechanical transformation or +translation of a Source form, including but not limited to compiled object code, +generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made +available under the License, as indicated by a copyright notice that is included +in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that +is based on (or derived from) the Work and for which the editorial revisions, +annotations, elaborations, or other modifications represent, as a whole, an +original work of authorship. For the purposes of this License, Derivative Works +shall not include works that remain separable from, or merely link (or bind by +name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version +of the Work and any modifications or additions to that Work or Derivative Works +thereof, that is intentionally submitted to Licensor for inclusion in the Work +by the copyright owner or by an individual or Legal Entity authorized to submit +on behalf of the copyright owner. For the purposes of this definition, +"submitted" means any form of electronic, verbal, or written communication sent +to the Licensor or its representatives, including but not limited to +communication on electronic mailing lists, source code control systems, and +issue tracking systems that are managed by, or on behalf of, the Licensor for +the purpose of discussing and improving the Work, but excluding communication +that is conspicuously marked or otherwise designated in writing by the copyright +owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf +of whom a Contribution has been received by Licensor and subsequently +incorporated within the Work. + +2. Grant of Copyright License. + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable copyright license to reproduce, prepare Derivative Works of, +publicly display, publicly perform, sublicense, and distribute the Work and such +Derivative Works in Source or Object form. + +3. Grant of Patent License. + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable (except as stated in this section) patent license to make, have +made, use, offer to sell, sell, import, and otherwise transfer the Work, where +such license applies only to those patent claims licensable by such Contributor +that are necessarily infringed by their Contribution(s) alone or by combination +of their Contribution(s) with the Work to which such Contribution(s) was +submitted. If You institute patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the Work or a +Contribution incorporated within the Work constitutes direct or contributory +patent infringement, then any patent licenses granted to You under this License +for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. + +You may reproduce and distribute copies of the Work or Derivative Works thereof +in any medium, with or without modifications, and in Source or Object form, +provided that You meet the following conditions: + +You must give any other recipients of the Work or Derivative Works a copy of +this License; and +You must cause any modified files to carry prominent notices stating that You +changed the files; and +You must retain, in the Source form of any Derivative Works that You distribute, +all copyright, patent, trademark, and attribution notices from the Source form +of the Work, excluding those notices that do not pertain to any part of the +Derivative Works; and +If the Work includes a "NOTICE" text file as part of its distribution, then any +Derivative Works that You distribute must include a readable copy of the +attribution notices contained within such NOTICE file, excluding those notices +that do not pertain to any part of the Derivative Works, in at least one of the +following places: within a NOTICE text file distributed as part of the +Derivative Works; within the Source form or documentation, if provided along +with the Derivative Works; or, within a display generated by the Derivative +Works, if and wherever such third-party notices normally appear. The contents of +the NOTICE file are for informational purposes only and do not modify the +License. You may add Your own attribution notices within Derivative Works that +You distribute, alongside or as an addendum to the NOTICE text from the Work, +provided that such additional attribution notices cannot be construed as +modifying the License. +You may add Your own copyright statement to Your modifications and may provide +additional or different license terms and conditions for use, reproduction, or +distribution of Your modifications, or for any such Derivative Works as a whole, +provided Your use, reproduction, and distribution of the Work otherwise complies +with the conditions stated in this License. + +5. Submission of Contributions. + +Unless You explicitly state otherwise, any Contribution intentionally submitted +for inclusion in the Work by You to the Licensor shall be under the terms and +conditions of this License, without any additional terms or conditions. +Notwithstanding the above, nothing herein shall supersede or modify the terms of +any separate license agreement you may have executed with Licensor regarding +such Contributions. + +6. Trademarks. + +This License does not grant permission to use the trade names, trademarks, +service marks, or product names of the Licensor, except as required for +reasonable and customary use in describing the origin of the Work and +reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. + +Unless required by applicable law or agreed to in writing, Licensor provides the +Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, +including, without limitation, any warranties or conditions of TITLE, +NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are +solely responsible for determining the appropriateness of using or +redistributing the Work and assume any risks associated with Your exercise of +permissions under this License. + +8. Limitation of Liability. + +In no event and under no legal theory, whether in tort (including negligence), +contract, or otherwise, unless required by applicable law (such as deliberate +and grossly negligent acts) or agreed to in writing, shall any Contributor be +liable to You for damages, including any direct, indirect, special, incidental, +or consequential damages of any character arising as a result of this License or +out of the use or inability to use the Work (including but not limited to +damages for loss of goodwill, work stoppage, computer failure or malfunction, or +any and all other commercial damages or losses), even if such Contributor has +been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. + +While redistributing the Work or Derivative Works thereof, You may choose to +offer, and charge a fee for, acceptance of support, warranty, indemnity, or +other liability obligations and/or rights consistent with this License. However, +in accepting such obligations, You may act only on Your own behalf and on Your +sole responsibility, not on behalf of any other Contributor, and only if You +agree to indemnify, defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason of your +accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work + +To apply the Apache License to your work, attach the following boilerplate +notice, with the fields enclosed by brackets "[]" replaced with your own +identifying information. (Don't include the brackets!) The text should be +enclosed in the appropriate comment syntax for the file format. We also +recommend that a file or class name and description of purpose be included on +the same "printed page" as the copyright notice for easier identification within +third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. From b3fd4e81c71d264010d5bf07faf203313d2d1c13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Sun, 20 Oct 2013 19:50:29 +0200 Subject: [PATCH 50/90] Update README.md --- README.md | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/README.md b/README.md index 1a324a2e..23a237b0 100644 --- a/README.md +++ b/README.md @@ -192,22 +192,3 @@ Contributing Contributions are very welcome. Now that this library has grown in popularity i have a hard time keeping upp with all the issues while tending to a multitude of other projects as well as school. So if you find a bug in the library or want a feature and think you can fix it yourself, fork + pull request and i will greatly appreciate it! I love getting pull requests for new features as well as bugs. However, when it comes to new features please also explain the use case and way you think the library should include it. If you don't want to start coding a feature without knowing if the feature will have chance of being included, open an issue and we can discuss the feature! - - -License -------- -``` -Copyright 2013 Emil Sjölander - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -``` From d58c61aaf50d2ddce0741ae75a516c600ae7f36c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Sun, 20 Oct 2013 21:37:13 +0200 Subject: [PATCH 51/90] minor gradle refactor --- gradle.properties | 4 ++-- maven_push.gradle | 6 +----- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/gradle.properties b/gradle.properties index 55ae6d20..088e3d3b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ -VERSION_NAME=2.0.1-SNAPSHOT -VERSION_CODE=74 +VERSION_NAME=2.0.1 +VERSION_CODE=75 GROUP=se.emilsjolander.stickylistheaders POM_DESCRIPTION=A small android library that makes it easy to make lists with section headers that stick to the top until a new section header comes along. diff --git a/maven_push.gradle b/maven_push.gradle index c3833e40..02b00378 100644 --- a/maven_push.gradle +++ b/maven_push.gradle @@ -1,10 +1,6 @@ apply plugin: 'maven' apply plugin: 'signing' -ENV = System.getenv() -USERNAME = ENV['SONATYPE_USERNAME'] -PASSWORD = ENV['SONATYPE_PASSWORD'] - if (isReleaseBuild()) { println 'RELEASE BUILD' sonatypeRepositoryUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2/" @@ -22,7 +18,7 @@ afterEvaluate { project -> pom.artifactId = POM_ARTIFACT_ID repository(url: sonatypeRepositoryUrl) { - authentication(userName: USERNAME, password: PASSWORD) + authentication(userName: SONATYPE_USERNAME, password: SONATYPE_PASSWORD) } pom.project { From 715033204d9e50224b5fd60cf6effa8745e936c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Sun, 20 Oct 2013 22:05:48 +0200 Subject: [PATCH 52/90] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 23a237b0..24d0d41b 100644 --- a/README.md +++ b/README.md @@ -18,10 +18,10 @@ The goal of this project is to deliver a high performance replacement to `ListVi Installing --------------- ###Gradle -Add the following gradle dependency exchanging `2.x.x` for the latest release. NOT YET READY! +Add the following gradle dependency exchanging `x.x.x` for the latest release. NOT YET READY! ```groovy dependencies { - compile 'se.emilsjolander:stickylistheaders:2.x.x@aar' + compile 'se.emilsjolander.stickylistheaders:library:x.x.x' } ``` From 59a52c823039fa96413849c118f20e515e873b66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Mon, 21 Oct 2013 10:19:27 +0200 Subject: [PATCH 53/90] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 24d0d41b..74c05b28 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ The goal of this project is to deliver a high performance replacement to `ListVi Installing --------------- ###Gradle -Add the following gradle dependency exchanging `x.x.x` for the latest release. NOT YET READY! +Add the following gradle dependency exchanging `x.x.x` for the latest release. ```groovy dependencies { compile 'se.emilsjolander.stickylistheaders:library:x.x.x' From 3cd1c3e5cfef4effee71b1848f4435a1af1b61ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Mon, 21 Oct 2013 21:22:03 +0200 Subject: [PATCH 54/90] updated gradle version code to corrospond to github release --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 088e3d3b..ab63d275 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ -VERSION_NAME=2.0.1 -VERSION_CODE=75 +VERSION_NAME=2.1.0 +VERSION_CODE=76 GROUP=se.emilsjolander.stickylistheaders POM_DESCRIPTION=A small android library that makes it easy to make lists with section headers that stick to the top until a new section header comes along. From 0129f1ced3c776f4679e762fdf27e66980d9491c Mon Sep 17 00:00:00 2001 From: Tom Date: Tue, 22 Oct 2013 18:40:19 +0800 Subject: [PATCH 55/90] Allows the fake list to work with the Activity based context menu methods --- .../stickylistheaders/StickyListHeadersListView.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java index 75a32f1e..819961ae 100644 --- a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java @@ -27,7 +27,7 @@ * ListView subclass and i did not was to change to name causing compatibility * errors. * - * @author Emil Sjšlander + * @author Emil Sjölander */ public class StickyListHeadersListView extends FrameLayout { @@ -797,6 +797,14 @@ public long getItemIdAtPosition(int position) { return mList.getItemIdAtPosition(position); } + public void setOnCreateContextMenuListener(OnCreateContextMenuListener l) { + mList.setOnCreateContextMenuListener(l); + } + + public boolean showContextMenu() { + return mList.showContextMenu(); + } + @Override public void setClipToPadding(boolean clipToPadding) { if (mList != null) { From 5b000abef2420aae7b958acbbdf910e42a8c2977 Mon Sep 17 00:00:00 2001 From: Tom Date: Tue, 22 Oct 2013 18:45:31 +0800 Subject: [PATCH 56/90] Patch to support invalidateViews() without having to obtain the wrapped list --- .../stickylistheaders/StickyListHeadersListView.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java index 819961ae..ecccdc57 100644 --- a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java @@ -805,6 +805,10 @@ public boolean showContextMenu() { return mList.showContextMenu(); } + public void invalidateViews() { + mList.invalidateViews(); + } + @Override public void setClipToPadding(boolean clipToPadding) { if (mList != null) { From e928606c8d63f7451d7b1d93f2a97401c15a07bf Mon Sep 17 00:00:00 2001 From: Tom Date: Tue, 22 Oct 2013 18:50:55 +0800 Subject: [PATCH 57/90] Fixes NPE in smoothScrollToPosition* methods --- .../stickylistheaders/StickyListHeadersListView.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java index ecccdc57..1030114e 100644 --- a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java @@ -503,7 +503,9 @@ private boolean isStartOfSection(int position) { private int getHeaderOverlap(int position) { boolean isStartOfSection = isStartOfSection(position); if (!isStartOfSection) { - View header = mAdapter.getView(position, null, mList); + View header = mAdapter.getHeaderView(position, null, mList); + header.setLayoutParams(new ViewGroup.LayoutParams( + LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); final int width = getWidth(); final int parentWidthMeasureSpec = MeasureSpec.makeMeasureSpec( From 958b17e39e7e38e5ae31463e54c9e80fdf9bb4c3 Mon Sep 17 00:00:00 2001 From: Tom Date: Tue, 22 Oct 2013 20:15:25 +0800 Subject: [PATCH 58/90] Revert "Fixes NPE in smoothScrollToPosition* methods" This reverts commit e928606c8d63f7451d7b1d93f2a97401c15a07bf. --- .../stickylistheaders/StickyListHeadersListView.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java index 1030114e..ecccdc57 100644 --- a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java @@ -503,9 +503,7 @@ private boolean isStartOfSection(int position) { private int getHeaderOverlap(int position) { boolean isStartOfSection = isStartOfSection(position); if (!isStartOfSection) { - View header = mAdapter.getHeaderView(position, null, mList); - header.setLayoutParams(new ViewGroup.LayoutParams( - LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); + View header = mAdapter.getView(position, null, mList); final int width = getWidth(); final int parentWidthMeasureSpec = MeasureSpec.makeMeasureSpec( From 027760fb21dae9d93eddb0e40754b7a51aad1fd6 Mon Sep 17 00:00:00 2001 From: Tom Date: Tue, 22 Oct 2013 20:21:52 +0800 Subject: [PATCH 59/90] Fixes positioning when using setSelection() and setSelectionFromTop() --- .../stickylistheaders/StickyListHeadersListView.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java index ecccdc57..acb71a80 100644 --- a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java @@ -730,7 +730,7 @@ public void smoothScrollToPositionFromTop(int position, int offset, } public void setSelection(int position) { - mList.setSelection(position); + setSelectionFromTop(position, 0); } public void setSelectionAfterHeaderView() { @@ -738,6 +738,7 @@ public void setSelectionAfterHeaderView() { } public void setSelectionFromTop(int position, int y) { + y += mAdapter == null ? 0 : getHeaderOverlap(position); mList.setSelectionFromTop(position, y); } From bb436cd02506c7bd88c23ca90a1d15c6448c9cf1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Tue, 22 Oct 2013 14:30:59 +0200 Subject: [PATCH 60/90] Update gradle group+artifact id. Fixes #210 --- README.md | 2 +- gradle.properties | 2 +- library/gradle.properties | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 74c05b28..be2ea177 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Installing Add the following gradle dependency exchanging `x.x.x` for the latest release. ```groovy dependencies { - compile 'se.emilsjolander.stickylistheaders:library:x.x.x' + compile 'se.emilsjolander:stickylistheaders:x.x.x' } ``` diff --git a/gradle.properties b/gradle.properties index ab63d275..fdfc0501 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ VERSION_NAME=2.1.0 VERSION_CODE=76 -GROUP=se.emilsjolander.stickylistheaders +GROUP=se.emilsjolander POM_DESCRIPTION=A small android library that makes it easy to make lists with section headers that stick to the top until a new section header comes along. POM_URL=https://github.com/emilsjolander/StickyListHeaders diff --git a/library/gradle.properties b/library/gradle.properties index 250343c3..af81058a 100644 --- a/library/gradle.properties +++ b/library/gradle.properties @@ -1,3 +1,3 @@ POM_NAME=StickyListHeaders Library -POM_ARTIFACT_ID=library +POM_ARTIFACT_ID=stickylistheaders POM_PACKAGING=aar From fc37dad7a2db501754a91858aef2e40d63a7b970 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Tue, 22 Oct 2013 17:55:30 +0200 Subject: [PATCH 61/90] fixes #206 --- .../StickyListHeadersListView.java | 42 ++++++++++--------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java index acb71a80..bcba8c20 100644 --- a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java @@ -212,17 +212,27 @@ public StickyListHeadersListView(Context context, AttributeSet attrs, @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); - measureHeader(); + measureHeader(mHeader); } - private void measureHeader() { - if (mHeader != null) { + private void ensureHeaderHasCorrectLayoutParams(View header) { + ViewGroup.LayoutParams lp = header.getLayoutParams(); + if (lp == null) { + lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); + } else if (lp.height == LayoutParams.MATCH_PARENT) { + lp.height = LayoutParams.WRAP_CONTENT; + } + header.setLayoutParams(lp); + } + + private void measureHeader(View header) { + if (header != null) { final int width = getMeasuredWidth() - mPaddingLeft - mPaddingRight; final int parentWidthMeasureSpec = MeasureSpec.makeMeasureSpec( width, MeasureSpec.EXACTLY); final int parentHeightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); - measureChild(mHeader, parentWidthMeasureSpec, + measureChild(header, parentWidthMeasureSpec, parentHeightMeasureSpec); } } @@ -310,14 +320,9 @@ private void updateHeader(int firstVisiblePosition) { } swapHeader(header); } - - ViewGroup.LayoutParams lp = mHeader.getLayoutParams(); - if (lp.height == ViewGroup.LayoutParams.MATCH_PARENT) { - lp.height = ViewGroup.LayoutParams.WRAP_CONTENT; - mHeader.setLayoutParams(lp); - } - measureHeader(); + ensureHeaderHasCorrectLayoutParams(mHeader); + measureHeader(mHeader); // Reset mHeaderOffset to null ensuring // that it will be set on the header and @@ -503,15 +508,12 @@ private boolean isStartOfSection(int position) { private int getHeaderOverlap(int position) { boolean isStartOfSection = isStartOfSection(position); if (!isStartOfSection) { - View header = mAdapter.getView(position, null, mList); - - final int width = getWidth(); - final int parentWidthMeasureSpec = MeasureSpec.makeMeasureSpec( - width, MeasureSpec.EXACTLY); - final int parentHeightMeasureSpec = MeasureSpec.makeMeasureSpec(0, - MeasureSpec.UNSPECIFIED); - measureChild(header, parentWidthMeasureSpec, - parentHeightMeasureSpec); + final View header = mAdapter.getView(position, null, mList); + if (header == null) { + throw new NullPointerException("header may not be null"); + } + ensureHeaderHasCorrectLayoutParams(header); + measureHeader(header); return header.getMeasuredHeight(); } return 0; From 37eb26ef13796de62e77d2b485897ea064fda333 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Tue, 22 Oct 2013 18:16:09 +0200 Subject: [PATCH 62/90] bumped version --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index fdfc0501..3394c2c9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ -VERSION_NAME=2.1.0 -VERSION_CODE=76 +VERSION_NAME=2.1.1 +VERSION_CODE=77 GROUP=se.emilsjolander POM_DESCRIPTION=A small android library that makes it easy to make lists with section headers that stick to the top until a new section header comes along. From b12970532282b7af40f960b081e76182ecbe47d4 Mon Sep 17 00:00:00 2001 From: Tom Date: Wed, 23 Oct 2013 09:14:55 +0800 Subject: [PATCH 63/90] Fixes "top" positioning --- .../stickylistheaders/StickyListHeadersListView.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java index bcba8c20..bc3a9945 100644 --- a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java @@ -507,8 +507,8 @@ private boolean isStartOfSection(int position) { private int getHeaderOverlap(int position) { boolean isStartOfSection = isStartOfSection(position); - if (!isStartOfSection) { - final View header = mAdapter.getView(position, null, mList); + if (isStartOfSection) { + View header = mAdapter.getHeaderView(position, null, mList); if (header == null) { throw new NullPointerException("header may not be null"); } From 78f52993fffb6d4449559b5c1acf2cadaa5a8838 Mon Sep 17 00:00:00 2001 From: Tom Date: Wed, 23 Oct 2013 15:39:29 +0800 Subject: [PATCH 64/90] Fixed crash if list is empty --- .../stickylistheaders/StickyListHeadersListView.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java index bc3a9945..95c7eb1e 100644 --- a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java @@ -290,11 +290,11 @@ private void updateOrClearHeader(int firstVisiblePosition) { // It is not a mistake to call getFirstVisiblePosition() here. // Most of the time getFixedFirstVisibleItem() should be called // but that does not work great together with getChildAt() - final boolean isFirstViewBelowTop = mList.getFirstVisiblePosition() == 0 + final boolean doesListHaveChildren = mList.getChildCount() != 0; + final boolean isFirstViewBelowTop = doesListHaveChildren && mList.getFirstVisiblePosition() == 0 && mList.getChildAt(0).getTop() > 0; final boolean isFirstVisibleItemOutsideAdapterRange = realFirstVisibleItem > adapterCount - 1 || realFirstVisibleItem < 0; - final boolean doesListHaveChildren = mList.getChildCount() != 0; if (!doesListHaveChildren || isFirstVisibleItemOutsideAdapterRange || isFirstViewBelowTop) { clearHeader(); From 3d4c4f6af91029b4bbbd46a4651917c2fb0b9e17 Mon Sep 17 00:00:00 2001 From: Christian Becker Date: Wed, 23 Oct 2013 11:12:47 +0200 Subject: [PATCH 65/90] Removed VERSION_CODE from gradle.properties. --- gradle.properties | 1 - 1 file changed, 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 3394c2c9..83443790 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,4 @@ VERSION_NAME=2.1.1 -VERSION_CODE=77 GROUP=se.emilsjolander POM_DESCRIPTION=A small android library that makes it easy to make lists with section headers that stick to the top until a new section header comes along. From ef686fa3c09ae12317a0e56e04a8a3fa243ad2b3 Mon Sep 17 00:00:00 2001 From: Christian Becker Date: Wed, 23 Oct 2013 11:13:28 +0200 Subject: [PATCH 66/90] Updated build-tools to 18.1.1 and gradle-tools to 0.6.+ --- build.gradle | 2 +- library/build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 7b17b1a3..849b1323 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:0.5.+' + classpath 'com.android.tools.build:gradle:0.6.+' } } diff --git a/library/build.gradle b/library/build.gradle index 3b1920f2..9b26536f 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'android-library' android { compileSdkVersion 18 - buildToolsVersion '18.0.1' + buildToolsVersion '18.1.1' sourceSets { main { From 8a65845ad35df24e5d114e4aaae81d27cde1b5ae Mon Sep 17 00:00:00 2001 From: Tom Date: Wed, 23 Oct 2013 20:00:13 +0800 Subject: [PATCH 67/90] Reverts the if-condition when computing the header overlap --- .../stickylistheaders/StickyListHeadersListView.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java index 95c7eb1e..2cdfdbc2 100644 --- a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java @@ -507,7 +507,7 @@ private boolean isStartOfSection(int position) { private int getHeaderOverlap(int position) { boolean isStartOfSection = isStartOfSection(position); - if (isStartOfSection) { + if (!isStartOfSection) { View header = mAdapter.getHeaderView(position, null, mList); if (header == null) { throw new NullPointerException("header may not be null"); From 86186b828e2a37e3186b2e078a63ee23b215c727 Mon Sep 17 00:00:00 2001 From: Chris Mitchell Date: Wed, 23 Oct 2013 08:24:28 -0600 Subject: [PATCH 68/90] Add method for addHeaderView(View, Object, boolean) http://developer.android.com/reference/android/widget/ListView.html#addHeaderView(android.view.View, java.lang.Object, boolean) --- .../stickylistheaders/StickyListHeadersListView.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java index bcba8c20..2378fd88 100644 --- a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java @@ -655,6 +655,10 @@ public void setOnItemLongClickListener(OnItemLongClickListener listener) { mList.setOnItemLongClickListener(listener); } + public void addHeaderView(View v, Object data, boolean isSelectable) { + mList.addHeaderView(v, data, isSelectable); + } + public void addHeaderView(View v) { mList.addHeaderView(v); } From 2e6633f51f8d30a10ddd6b1d71536cf40d9baa63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Thu, 24 Oct 2013 21:23:03 +0200 Subject: [PATCH 69/90] fixed all the scrollToPosition methods Now the correctly scroll to the correct position without overlaying the header. --- .../stickylistheaders/StickyListHeadersListView.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java index 9c1c687e..2fde7ade 100644 --- a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java @@ -501,7 +501,7 @@ public void onHeaderClick(View header, int itemPosition, long headerId) { private boolean isStartOfSection(int position) { return position == 0 - || mAdapter.getHeaderId(position) == mAdapter + || mAdapter.getHeaderId(position) != mAdapter .getHeaderId(position - 1); } @@ -710,6 +710,7 @@ public void smoothScrollToPosition(int position) { mList.smoothScrollToPosition(position); } else { int offset = mAdapter == null ? 0 : getHeaderOverlap(position); + offset -= mClippingToPadding ? 0 : mPaddingTop; mList.smoothScrollToPositionFromTop(position, offset); } } @@ -724,6 +725,7 @@ public void smoothScrollToPosition(int position, int boundPosition) { public void smoothScrollToPositionFromTop(int position, int offset) { requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); offset += mAdapter == null ? 0 : getHeaderOverlap(position); + offset -= mClippingToPadding ? 0 : mPaddingTop; mList.smoothScrollToPositionFromTop(position, offset); } @@ -732,6 +734,7 @@ public void smoothScrollToPositionFromTop(int position, int offset, int duration) { requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); offset += mAdapter == null ? 0 : getHeaderOverlap(position); + offset -= mClippingToPadding ? 0 : mPaddingTop; mList.smoothScrollToPositionFromTop(position, offset, duration); } @@ -745,6 +748,7 @@ public void setSelectionAfterHeaderView() { public void setSelectionFromTop(int position, int y) { y += mAdapter == null ? 0 : getHeaderOverlap(position); + y -= mClippingToPadding ? 0 : mPaddingTop; mList.setSelectionFromTop(position, y); } From 71231504ab94d3fc4aba3922d5f7bcda3307c692 Mon Sep 17 00:00:00 2001 From: Sergii Pechenizkyi Date: Thu, 24 Oct 2013 18:39:13 +0300 Subject: [PATCH 70/90] added fastScrollAlwaysVisible attr --- library/res/values/attrs.xml | 1 + .../StickyListHeadersListView.java | 30 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/library/res/values/attrs.xml b/library/res/values/attrs.xml index c56a282d..a626288f 100644 --- a/library/res/values/attrs.xml +++ b/library/res/values/attrs.xml @@ -17,6 +17,7 @@ + diff --git a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java index 2fde7ade..d4dddde5 100644 --- a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java @@ -172,6 +172,12 @@ public StickyListHeadersListView(Context context, AttributeSet attrs, .getBoolean( R.styleable.StickyListHeadersListView_android_fastScrollEnabled, mList.isFastScrollEnabled())); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { + mList.setFastScrollAlwaysVisible(a + .getBoolean( + R.styleable.StickyListHeadersListView_android_fastScrollAlwaysVisible, + mList.isFastScrollAlwaysVisible())); + } mList.setScrollBarStyle(a .getInt(R.styleable.StickyListHeadersListView_android_scrollbarStyle, 0)); @@ -866,6 +872,30 @@ public void setFastScrollEnabled(boolean fastScrollEnabled) { mList.setFastScrollEnabled(fastScrollEnabled); } + /** + * @see android.widget.AbsListView#setFastScrollAlwaysVisible(boolean) + * @throws ApiLevelTooLowException on pre-Honeycomb device. + */ + @TargetApi(Build.VERSION_CODES.HONEYCOMB) + public void setFastScrollAlwaysVisible(boolean alwaysVisible) { + requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { + mList.setFastScrollAlwaysVisible(alwaysVisible); + } + } + + /** + * @see android.widget.AbsListView#isFastScrollAlwaysVisible() + * @return true if the fast scroller will always show. False on pre-Honeycomb devices. + */ + @TargetApi(Build.VERSION_CODES.HONEYCOMB) + public boolean isFastScrollAlwaysVisible(){ + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { + return false; + } + return mList.isFastScrollAlwaysVisible(); + } + private void requireSdkVersion(int versionCode) { if (Build.VERSION.SDK_INT < versionCode) { throw new ApiLevelTooLowException(versionCode); From 805bdb106275d0a13bd9a5c643b700968ca0bc06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Mon, 28 Oct 2013 08:00:12 +0100 Subject: [PATCH 71/90] bumped version --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 83443790..0914a19d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -VERSION_NAME=2.1.1 +VERSION_NAME=2.1.2 GROUP=se.emilsjolander POM_DESCRIPTION=A small android library that makes it easy to make lists with section headers that stick to the top until a new section header comes along. From 28bcba82e0a009a4be91e05ff3aff27b37a2913f Mon Sep 17 00:00:00 2001 From: rno Date: Sun, 3 Nov 2013 02:59:06 +0100 Subject: [PATCH 72/90] Allow to show / hide scrollbars --- .../StickyListHeadersListView.java | 18 +++++++++++++++--- sample/res/layout/main.xml | 5 +++-- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java index d4dddde5..6fe32168 100644 --- a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java @@ -208,12 +208,14 @@ public StickyListHeadersListView(Context context, AttributeSet attrs, .getBoolean( R.styleable.StickyListHeadersListView_isDrawingListUnderStickyHeader, true); - - } finally { + } finally { a.recycle(); } } - } + + mList.setVerticalScrollBarEnabled(isVerticalScrollBarEnabled()); + mList.setHorizontalScrollBarEnabled(isHorizontalScrollBarEnabled()); + } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { @@ -697,6 +699,16 @@ public View getEmptyView() { return mList.getEmptyView(); } + @Override + public void setVerticalScrollBarEnabled(boolean verticalScrollBarEnabled) { + mList.setVerticalScrollBarEnabled(verticalScrollBarEnabled); + } + + @Override + public void setHorizontalScrollBarEnabled(boolean horizontalScrollBarEnabled) { + mList.setHorizontalScrollBarEnabled(horizontalScrollBarEnabled); + } + @TargetApi(Build.VERSION_CODES.FROYO) public void smoothScrollBy(int distance, int duration) { requireSdkVersion(Build.VERSION_CODES.FROYO); diff --git a/sample/res/layout/main.xml b/sample/res/layout/main.xml index 39d285df..58e0bf0f 100644 --- a/sample/res/layout/main.xml +++ b/sample/res/layout/main.xml @@ -8,9 +8,10 @@ android:layout_height="match_parent" android:clipToPadding="false" android:drawSelectorOnTop="true" - android:fastScrollEnabled="true" + android:fastScrollEnabled="false" android:padding="16dp" - android:scrollbarStyle="outsideOverlay" /> + android:scrollbarStyle="outsideOverlay" + android:scrollbars="none"/> Date: Sun, 3 Nov 2013 14:45:44 +0100 Subject: [PATCH 73/90] Reverted sample changes --- sample/res/layout/main.xml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/sample/res/layout/main.xml b/sample/res/layout/main.xml index 58e0bf0f..39d285df 100644 --- a/sample/res/layout/main.xml +++ b/sample/res/layout/main.xml @@ -8,10 +8,9 @@ android:layout_height="match_parent" android:clipToPadding="false" android:drawSelectorOnTop="true" - android:fastScrollEnabled="false" + android:fastScrollEnabled="true" android:padding="16dp" - android:scrollbarStyle="outsideOverlay" - android:scrollbars="none"/> + android:scrollbarStyle="outsideOverlay" /> Date: Sat, 2 Nov 2013 01:14:12 +0100 Subject: [PATCH 74/90] migrated project to android studio adding gradle wrapper --- gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 49896 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 164 +++++++++++++++++++++++ gradlew.bat | 90 +++++++++++++ 4 files changed, 260 insertions(+) create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..8c0fb64a8698b08ecc4158d828ca593c4928e9dd GIT binary patch literal 49896 zcmagFb986H(k`5d^NVfUwr$(C?M#x1ZQHiZiEVpg+jrjgoQrerx!>1o_ul)D>ebz~ zs=Mmxr&>W81QY-S1PKWQ%N-;H^tS;2*XwVA`dej1RRn1z<;3VgfE4~kaG`A%QSPsR z#ovnZe+tS9%1MfeDyz`RirvdjPRK~p(#^q2(^5@O&NM19EHdvN-A&StN>0g6QA^VN z0Gx%Gq#PD$QMRFzmK+utjS^Y1F0e8&u&^=w5K<;4Rz|i3A=o|IKLY+g`iK6vfr9?+ z-`>gmU&i?FGSL5&F?TXFu`&Js6h;15QFkXp2M1H9|Eq~bpov-GU(uz%mH0n55wUl- zv#~ccAz`F5wlQ>e_KlJS3@{)B?^v*EQM=IxLa&76^y51a((wq|2-`qON>+4dLc{Oo z51}}o^Zen(oAjxDK7b++9_Yg`67p$bPo3~BCpGM7uAWmvIhWc5Gi+gQZ|Pwa-Gll@<1xmcPy z|NZmu6m)g5Ftu~BG&Xdxclw7Cij{xbBMBn-LMII#Slp`AElb&2^Hw+w>(3crLH!;I zN+Vk$D+wP1#^!MDCiad@vM>H#6+`Ct#~6VHL4lzmy;lSdk>`z6)=>Wh15Q2)dQtGqvn0vJU@+(B5{MUc*qs4!T+V=q=wy)<6$~ z!G>e_4dN@lGeF_$q9`Ju6Ncb*x?O7=l{anm7Eahuj_6lA{*#Gv*TaJclevPVbbVYu z(NY?5q+xxbO6%g1xF0r@Ix8fJ~u)VRUp`S%&rN$&e!Od`~s+64J z5*)*WSi*i{k%JjMSIN#X;jC{HG$-^iX+5f5BGOIHWAl*%15Z#!xntpk($-EGKCzKa zT7{siZ9;4TICsWQ$pu&wKZQTCvpI$Xvzwxoi+XkkpeE&&kFb!B?h2hi%^YlXt|-@5 zHJ~%AN!g_^tmn1?HSm^|gCE#!GRtK2(L{9pL#hp0xh zME}|DB>(5)`iE7CM)&_+S}-Bslc#@B5W4_+k4Cp$l>iVyg$KP>CN?SVGZ(&02>iZK zB<^HP$g$Lq*L$BWd?2(F?-MUbNWTJVQdW7$#8a|k_30#vHAD1Z{c#p;bETk0VnU5A zBgLe2HFJ3032$G<`m*OB!KM$*sdM20jm)It5OSru@tXpK5LT>#8)N!*skNu1$TpIw zufjjdp#lyH5bZ%|Iuo|iu9vG1HrIVWLH>278xo>aVBkPN3V$~!=KnlXQ4eDqS7%E% zQ!z^$Q$b^6Q)g#cLpwur(|<0gWHo6A6jc;n`t(V9T;LzTAU{IAu*uEQ%Ort1k+Kn+f_N`9|bxYC+~Z1 zCC1UCWv*Orx$_@ydv9mIe(liLfOr7mhbV@tKw{6)q^1DH1nmvZ0cj215R<~&I<4S| zgnr;9Cdjqpz#o8i0CQjtl`}{c*P)aSdH|abxGdrR)-3z+02-eX(k*B)Uqv6~^nh** z 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 \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 00000000..aec99730 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega From 713e27a5e6a839dca109f0b7f10bb65730d2c14b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Thu, 14 Nov 2013 00:31:55 +0100 Subject: [PATCH 75/90] fixes #226 and bumps --- gradle.properties | 2 +- .../StickyListHeadersListView.java | 41 +++++++++++-------- 2 files changed, 24 insertions(+), 19 deletions(-) diff --git a/gradle.properties b/gradle.properties index 0914a19d..fd753052 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -VERSION_NAME=2.1.2 +VERSION_NAME=2.1.3 GROUP=se.emilsjolander POM_DESCRIPTION=A small android library that makes it easy to make lists with section headers that stick to the top until a new section header comes along. diff --git a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java index 6fe32168..40e03fc3 100644 --- a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java @@ -1,6 +1,5 @@ package se.emilsjolander.stickylistheaders; -import se.emilsjolander.stickylistheaders.WrapperViewList.LifeCycleListener; import android.annotation.SuppressLint; import android.annotation.TargetApi; import android.content.Context; @@ -21,6 +20,8 @@ import android.widget.ListView; import android.widget.SectionIndexer; +import se.emilsjolander.stickylistheaders.WrapperViewList.LifeCycleListener; + /** * Even though this is a FrameLayout subclass we it is called a ListView. This * is because of 2 reasons. 1. It acts like as ListView 2. It used to be a @@ -300,12 +301,12 @@ private void updateOrClearHeader(int firstVisiblePosition) { // but that does not work great together with getChildAt() final boolean doesListHaveChildren = mList.getChildCount() != 0; final boolean isFirstViewBelowTop = doesListHaveChildren && mList.getFirstVisiblePosition() == 0 - && mList.getChildAt(0).getTop() > 0; + && mList.getChildAt(0).getTop() > (mClippingToPadding ? mPaddingTop : 0); final boolean isFirstVisibleItemOutsideAdapterRange = realFirstVisibleItem > adapterCount - 1 || realFirstVisibleItem < 0; if (!doesListHaveChildren || isFirstVisibleItemOutsideAdapterRange || isFirstViewBelowTop) { - clearHeader(); + clearHeader(); return; } @@ -396,26 +397,30 @@ private void updateHeaderVisibilities() { top = mHeader.getMeasuredHeight() + (mHeaderOffset != null ? mHeaderOffset : 0); } else { - top = mClippingToPadding ? mPaddingTop : 0; + top = mClippingToPadding ? mPaddingTop : 0; } int childCount = mList.getChildCount(); for (int i = 0; i < childCount; i++) { View child = mList.getChildAt(i); - if (child instanceof WrapperView) { - WrapperView wrapperViewChild = (WrapperView) child; - if (wrapperViewChild.hasHeader()) { - View childHeader = wrapperViewChild.mHeader; - if (wrapperViewChild.getTop() < top) { - if (childHeader.getVisibility() != View.INVISIBLE) { - childHeader.setVisibility(View.INVISIBLE); - } - } else { - if (childHeader.getVisibility() != View.VISIBLE) { - childHeader.setVisibility(View.VISIBLE); - } - } - } + if (!(child instanceof WrapperView)) { + continue; } + + WrapperView wrapperViewChild = (WrapperView) child; + if (!wrapperViewChild.hasHeader()) { + continue; + } + + View childHeader = wrapperViewChild.mHeader; + if (wrapperViewChild.getTop() < top) { + if (childHeader.getVisibility() != View.INVISIBLE) { + childHeader.setVisibility(View.INVISIBLE); + } + } else { + if (childHeader.getVisibility() != View.VISIBLE) { + childHeader.setVisibility(View.VISIBLE); + } + } } } From d4516dbe62be3d490c035909d21bcf270b6268db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Thu, 14 Nov 2013 11:36:55 +0100 Subject: [PATCH 76/90] Added a OnStickyHeaderOffsetChangedListener --- README.md | 11 +- .../StickyListHeadersListView.java | 1705 +++++++++-------- sample/res/values/colors.xml | 4 +- .../stickylistheaders/TestActivity.java | 11 +- 4 files changed, 889 insertions(+), 842 deletions(-) diff --git a/README.md b/README.md index be2ea177..17b59e2f 100644 --- a/README.md +++ b/README.md @@ -166,7 +166,16 @@ public void setAreHeadersSticky(boolean areHeadersSticky); public boolean areHeadersSticky(); ``` -A OnHeaderClickListener is the header version of OnItemClickListener. This is the setter for it and the interface of the listener. The currentlySticky boolean flag indicated if the header that was clicked was sticking to the top at the time it was clicked. +A `OnHeaderClickListener` is the header version of OnItemClickListener. This is the setter for it and the interface of the listener. The currentlySticky boolean flag indicated if the header that was clicked was sticking to the top at the time it was clicked. +```java +public void setOnHeaderClickListener(OnHeaderClickListener onHeaderClickListener); + +public interface OnHeaderClickListener { + public void onHeaderClick(StickyListHeadersListView l, View header, int itemPosition, long headerId, boolean currentlySticky); +} +``` + +A `OnStickyHeaderOffsetChangedListener` is a Listener used for listening to when the sticky header slides out of the screen. The offset parameter will slowly grow to be the same size as the headers height. Use the listeners callback to transform the header in any way you see fit, the standard android contacts app dims the text for example. ```java public void setOnHeaderClickListener(OnHeaderClickListener onHeaderClickListener); diff --git a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java index 40e03fc3..dac60e7f 100644 --- a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java @@ -27,390 +27,412 @@ * is because of 2 reasons. 1. It acts like as ListView 2. It used to be a * ListView subclass and i did not was to change to name causing compatibility * errors. - * + * * @author Emil Sjölander */ public class StickyListHeadersListView extends FrameLayout { - public interface OnHeaderClickListener { - public void onHeaderClick(StickyListHeadersListView l, View header, - int itemPosition, long headerId, boolean currentlySticky); - } - - /* --- Children --- */ - private WrapperViewList mList; - private View mHeader; - - /* --- Header state --- */ - private Long mHeaderId; - // used to not have to call getHeaderId() all the time - private Integer mHeaderPosition; - private Integer mHeaderOffset; - - /* --- Delegates --- */ - private OnScrollListener mOnScrollListenerDelegate; - - /* --- Settings --- */ - private boolean mAreHeadersSticky = true; - private boolean mClippingToPadding = true; - private boolean mIsDrawingListUnderStickyHeader = true; - private int mPaddingLeft = 0; - private int mPaddingTop = 0; - private int mPaddingRight = 0; - private int mPaddingBottom = 0; - - /* --- Other --- */ - private AdapterWrapper mAdapter; - private OnHeaderClickListener mOnHeaderClickListener; - private Drawable mDivider; - private int mDividerHeight; - private AdapterWrapperDataSetObserver mDataSetObserver; - - public StickyListHeadersListView(Context context) { - this(context, null); - } - - public StickyListHeadersListView(Context context, AttributeSet attrs) { - this(context, attrs, 0); - } - - @TargetApi(Build.VERSION_CODES.HONEYCOMB) - public StickyListHeadersListView(Context context, AttributeSet attrs, - int defStyle) { - super(context, attrs, defStyle); - - // Initialize the list - mList = new WrapperViewList(context); - mDivider = mList.getDivider(); - mDividerHeight = mList.getDividerHeight(); - - // null out divider, dividers are handled by adapter so they look good - // with headers - mList.setDivider(null); - mList.setDividerHeight(0); - - mList.setLifeCycleListener(new WrapperViewListLifeCycleListener()); - mList.setOnScrollListener(new WrapperListScrollListener()); - addView(mList); - - if (attrs != null) { - TypedArray a = context.getTheme().obtainStyledAttributes(attrs, - R.styleable.StickyListHeadersListView, 0, 0); - - try { - // Android attributes - if (a.hasValue(R.styleable.StickyListHeadersListView_android_padding)) { - int padding = a - .getDimensionPixelSize( - R.styleable.StickyListHeadersListView_android_padding, - 0); - mPaddingLeft = padding; - mPaddingTop = padding; - mPaddingRight = padding; - mPaddingBottom = padding; - } else { - mPaddingLeft = a - .getDimensionPixelSize( - R.styleable.StickyListHeadersListView_android_paddingLeft, - 0); - mPaddingTop = a - .getDimensionPixelSize( - R.styleable.StickyListHeadersListView_android_paddingTop, - 0); - mPaddingRight = a - .getDimensionPixelSize( - R.styleable.StickyListHeadersListView_android_paddingRight, - 0); - mPaddingBottom = a - .getDimensionPixelSize( - R.styleable.StickyListHeadersListView_android_paddingBottom, - 0); - } - setPadding(mPaddingLeft, mPaddingTop, mPaddingRight, - mPaddingBottom); - - // Set clip to padding on the list and reset value to default on - // wrapper - mClippingToPadding = a - .getBoolean( - R.styleable.StickyListHeadersListView_android_clipToPadding, - true); - super.setClipToPadding(true); - mList.setClipToPadding(mClippingToPadding); - - // ListView attributes - mList.setFadingEdgeLength(a - .getDimensionPixelSize( - R.styleable.StickyListHeadersListView_android_fadingEdgeLength, - mList.getVerticalFadingEdgeLength())); - final int fadingEdge = a - .getInt(R.styleable.StickyListHeadersListView_android_requiresFadingEdge, - 0); - if (fadingEdge == 0x00001000) { - mList.setVerticalFadingEdgeEnabled(false); - mList.setHorizontalFadingEdgeEnabled(true); - } else if (fadingEdge == 0x00002000) { - mList.setVerticalFadingEdgeEnabled(true); - mList.setHorizontalFadingEdgeEnabled(false); - } else { - mList.setVerticalFadingEdgeEnabled(false); - mList.setHorizontalFadingEdgeEnabled(false); - } - mList.setCacheColorHint(a - .getColor( - R.styleable.StickyListHeadersListView_android_cacheColorHint, - mList.getCacheColorHint())); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { - mList.setChoiceMode(a - .getInt(R.styleable.StickyListHeadersListView_android_choiceMode, - mList.getChoiceMode())); - } - mList.setDrawSelectorOnTop(a - .getBoolean( - R.styleable.StickyListHeadersListView_android_drawSelectorOnTop, - false)); - mList.setFastScrollEnabled(a - .getBoolean( - R.styleable.StickyListHeadersListView_android_fastScrollEnabled, - mList.isFastScrollEnabled())); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { - mList.setFastScrollAlwaysVisible(a - .getBoolean( - R.styleable.StickyListHeadersListView_android_fastScrollAlwaysVisible, - mList.isFastScrollAlwaysVisible())); - } - mList.setScrollBarStyle(a - .getInt(R.styleable.StickyListHeadersListView_android_scrollbarStyle, - 0)); - final Drawable selector = a - .getDrawable(R.styleable.StickyListHeadersListView_android_listSelector); - if (selector != null) { - mList.setSelector(selector); - } - mList.setScrollingCacheEnabled(a - .getBoolean( - R.styleable.StickyListHeadersListView_android_scrollingCache, - mList.isScrollingCacheEnabled())); - final Drawable divider = a - .getDrawable(R.styleable.StickyListHeadersListView_android_divider); - if (divider != null) { - mDivider = divider; - } - mDividerHeight = a - .getDimensionPixelSize( - R.styleable.StickyListHeadersListView_android_dividerHeight, - mDividerHeight); - - // StickyListHeaders attributes - mAreHeadersSticky = a.getBoolean( - R.styleable.StickyListHeadersListView_hasStickyHeaders, - true); - mIsDrawingListUnderStickyHeader = a - .getBoolean( - R.styleable.StickyListHeadersListView_isDrawingListUnderStickyHeader, - true); + public interface OnHeaderClickListener { + public void onHeaderClick(StickyListHeadersListView l, View header, + int itemPosition, long headerId, boolean currentlySticky); + } + + /** + * Notifies the listener when the sticky headers top offset has changed. + */ + public interface OnStickyHeaderOffsetChangedListener { + /** + * @param l The view parent + * @param header The currently sticky header being offset. + * This header is not guaranteed to have it's measurements set. + * It is however guaranteed that this view has been measured, + * therefor you should user getMeasured* methods instead of + * get* methods for determining the view's size. + * @param offset The amount the sticky header is offset by towards to top of the screen. + */ + public void onStickyHeaderOffsetChanged(StickyListHeadersListView l, View header, int offset); + } + + /* --- Children --- */ + private WrapperViewList mList; + private View mHeader; + + /* --- Header state --- */ + private Long mHeaderId; + // used to not have to call getHeaderId() all the time + private Integer mHeaderPosition; + private Integer mHeaderOffset; + + /* --- Delegates --- */ + private OnScrollListener mOnScrollListenerDelegate; + private AdapterWrapper mAdapter; + + /* --- Settings --- */ + private boolean mAreHeadersSticky = true; + private boolean mClippingToPadding = true; + private boolean mIsDrawingListUnderStickyHeader = true; + private int mPaddingLeft = 0; + private int mPaddingTop = 0; + private int mPaddingRight = 0; + private int mPaddingBottom = 0; + + /* --- Other --- */ + private OnHeaderClickListener mOnHeaderClickListener; + private OnStickyHeaderOffsetChangedListener mOnStickyHeaderOffsetChangedListener; + private AdapterWrapperDataSetObserver mDataSetObserver; + private Drawable mDivider; + private int mDividerHeight; + + public StickyListHeadersListView(Context context) { + this(context, null); + } + + public StickyListHeadersListView(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + @TargetApi(Build.VERSION_CODES.HONEYCOMB) + public StickyListHeadersListView(Context context, AttributeSet attrs, + int defStyle) { + super(context, attrs, defStyle); + + // Initialize the list + mList = new WrapperViewList(context); + mDivider = mList.getDivider(); + mDividerHeight = mList.getDividerHeight(); + + // null out divider, dividers are handled by adapter so they look good + // with headers + mList.setDivider(null); + mList.setDividerHeight(0); + + mList.setLifeCycleListener(new WrapperViewListLifeCycleListener()); + mList.setOnScrollListener(new WrapperListScrollListener()); + addView(mList); + + if (attrs != null) { + TypedArray a = context.getTheme().obtainStyledAttributes(attrs, + R.styleable.StickyListHeadersListView, 0, 0); + + try { + // Android attributes + if (a.hasValue(R.styleable.StickyListHeadersListView_android_padding)) { + int padding = a + .getDimensionPixelSize( + R.styleable.StickyListHeadersListView_android_padding, + 0); + mPaddingLeft = padding; + mPaddingTop = padding; + mPaddingRight = padding; + mPaddingBottom = padding; + } else { + mPaddingLeft = a + .getDimensionPixelSize( + R.styleable.StickyListHeadersListView_android_paddingLeft, + 0); + mPaddingTop = a + .getDimensionPixelSize( + R.styleable.StickyListHeadersListView_android_paddingTop, + 0); + mPaddingRight = a + .getDimensionPixelSize( + R.styleable.StickyListHeadersListView_android_paddingRight, + 0); + mPaddingBottom = a + .getDimensionPixelSize( + R.styleable.StickyListHeadersListView_android_paddingBottom, + 0); + } + setPadding(mPaddingLeft, mPaddingTop, mPaddingRight, + mPaddingBottom); + + // Set clip to padding on the list and reset value to default on + // wrapper + mClippingToPadding = a + .getBoolean( + R.styleable.StickyListHeadersListView_android_clipToPadding, + true); + super.setClipToPadding(true); + mList.setClipToPadding(mClippingToPadding); + + // ListView attributes + mList.setFadingEdgeLength(a + .getDimensionPixelSize( + R.styleable.StickyListHeadersListView_android_fadingEdgeLength, + mList.getVerticalFadingEdgeLength())); + final int fadingEdge = a + .getInt(R.styleable.StickyListHeadersListView_android_requiresFadingEdge, + 0); + if (fadingEdge == 0x00001000) { + mList.setVerticalFadingEdgeEnabled(false); + mList.setHorizontalFadingEdgeEnabled(true); + } else if (fadingEdge == 0x00002000) { + mList.setVerticalFadingEdgeEnabled(true); + mList.setHorizontalFadingEdgeEnabled(false); + } else { + mList.setVerticalFadingEdgeEnabled(false); + mList.setHorizontalFadingEdgeEnabled(false); + } + mList.setCacheColorHint(a + .getColor( + R.styleable.StickyListHeadersListView_android_cacheColorHint, + mList.getCacheColorHint())); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { + mList.setChoiceMode(a + .getInt(R.styleable.StickyListHeadersListView_android_choiceMode, + mList.getChoiceMode())); + } + mList.setDrawSelectorOnTop(a + .getBoolean( + R.styleable.StickyListHeadersListView_android_drawSelectorOnTop, + false)); + mList.setFastScrollEnabled(a + .getBoolean( + R.styleable.StickyListHeadersListView_android_fastScrollEnabled, + mList.isFastScrollEnabled())); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { + mList.setFastScrollAlwaysVisible(a + .getBoolean( + R.styleable.StickyListHeadersListView_android_fastScrollAlwaysVisible, + mList.isFastScrollAlwaysVisible())); + } + mList.setScrollBarStyle(a + .getInt(R.styleable.StickyListHeadersListView_android_scrollbarStyle, + 0)); + final Drawable selector = a + .getDrawable(R.styleable.StickyListHeadersListView_android_listSelector); + if (selector != null) { + mList.setSelector(selector); + } + mList.setScrollingCacheEnabled(a + .getBoolean( + R.styleable.StickyListHeadersListView_android_scrollingCache, + mList.isScrollingCacheEnabled())); + final Drawable divider = a + .getDrawable(R.styleable.StickyListHeadersListView_android_divider); + if (divider != null) { + mDivider = divider; + } + mDividerHeight = a + .getDimensionPixelSize( + R.styleable.StickyListHeadersListView_android_dividerHeight, + mDividerHeight); + + // StickyListHeaders attributes + mAreHeadersSticky = a.getBoolean( + R.styleable.StickyListHeadersListView_hasStickyHeaders, + true); + mIsDrawingListUnderStickyHeader = a + .getBoolean( + R.styleable.StickyListHeadersListView_isDrawingListUnderStickyHeader, + true); } finally { - a.recycle(); - } - } + a.recycle(); + } + } mList.setVerticalScrollBarEnabled(isVerticalScrollBarEnabled()); mList.setHorizontalScrollBarEnabled(isHorizontalScrollBarEnabled()); } - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - measureHeader(mHeader); - } - - private void ensureHeaderHasCorrectLayoutParams(View header) { - ViewGroup.LayoutParams lp = header.getLayoutParams(); - if (lp == null) { - lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); - } else if (lp.height == LayoutParams.MATCH_PARENT) { - lp.height = LayoutParams.WRAP_CONTENT; - } - header.setLayoutParams(lp); - } - - private void measureHeader(View header) { - if (header != null) { - final int width = getMeasuredWidth() - mPaddingLeft - mPaddingRight; - final int parentWidthMeasureSpec = MeasureSpec.makeMeasureSpec( - width, MeasureSpec.EXACTLY); - final int parentHeightMeasureSpec = MeasureSpec.makeMeasureSpec(0, - MeasureSpec.UNSPECIFIED); - measureChild(header, parentWidthMeasureSpec, - parentHeightMeasureSpec); - } - } - - @Override - protected void onLayout(boolean changed, int left, int top, int right, - int bottom) { - mList.layout(0, 0, mList.getMeasuredWidth(), getHeight()); - if (mHeader != null) { - MarginLayoutParams lp = (MarginLayoutParams) mHeader - .getLayoutParams(); - int headerTop = lp.topMargin - + (mClippingToPadding ? mPaddingTop : 0); - // The left parameter must for some reason be set to 0. - // I think it should be set to mPaddingLeft but apparently not - mHeader.layout(mPaddingLeft, headerTop, mHeader.getMeasuredWidth() - + mPaddingLeft, headerTop + mHeader.getMeasuredHeight()); - } - } - - @Override - protected void dispatchDraw(Canvas canvas) { - // Only draw the list here. - // The header should be drawn right after the lists children are drawn. - // This is done so that the header is above the list items - // but below the list decorators (scroll bars etc). - drawChild(canvas, mList, 0); - } - - // Reset values tied the header. also remove header form layout - // This is called in response to the data set or the adapter changing - private void clearHeader() { - if (mHeader != null) { - removeView(mHeader); - mHeader = null; - mHeaderId = null; - mHeaderPosition = null; - mHeaderOffset = null; - - // reset the top clipping length - mList.setTopClippingLength(0); - updateHeaderVisibilities(); - } - } - - private void updateOrClearHeader(int firstVisiblePosition) { - final int adapterCount = mAdapter == null ? 0 : mAdapter.getCount(); - if (adapterCount == 0 || !mAreHeadersSticky) { - return; - } - - final int headerViewCount = mList.getHeaderViewsCount(); - final int realFirstVisibleItem = firstVisiblePosition - headerViewCount; - - // It is not a mistake to call getFirstVisiblePosition() here. - // Most of the time getFixedFirstVisibleItem() should be called - // but that does not work great together with getChildAt() - final boolean doesListHaveChildren = mList.getChildCount() != 0; - final boolean isFirstViewBelowTop = doesListHaveChildren && mList.getFirstVisiblePosition() == 0 - && mList.getChildAt(0).getTop() > (mClippingToPadding ? mPaddingTop : 0); - final boolean isFirstVisibleItemOutsideAdapterRange = realFirstVisibleItem > adapterCount - 1 - || realFirstVisibleItem < 0; - if (!doesListHaveChildren || isFirstVisibleItemOutsideAdapterRange - || isFirstViewBelowTop) { + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + measureHeader(mHeader); + } + + private void ensureHeaderHasCorrectLayoutParams(View header) { + ViewGroup.LayoutParams lp = header.getLayoutParams(); + if (lp == null) { + lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); + } else if (lp.height == LayoutParams.MATCH_PARENT) { + lp.height = LayoutParams.WRAP_CONTENT; + } + header.setLayoutParams(lp); + } + + private void measureHeader(View header) { + if (header != null) { + final int width = getMeasuredWidth() - mPaddingLeft - mPaddingRight; + final int parentWidthMeasureSpec = MeasureSpec.makeMeasureSpec( + width, MeasureSpec.EXACTLY); + final int parentHeightMeasureSpec = MeasureSpec.makeMeasureSpec(0, + MeasureSpec.UNSPECIFIED); + measureChild(header, parentWidthMeasureSpec, + parentHeightMeasureSpec); + } + } + + @Override + protected void onLayout(boolean changed, int left, int top, int right, + int bottom) { + mList.layout(0, 0, mList.getMeasuredWidth(), getHeight()); + if (mHeader != null) { + MarginLayoutParams lp = (MarginLayoutParams) mHeader + .getLayoutParams(); + int headerTop = lp.topMargin + + (mClippingToPadding ? mPaddingTop : 0); + // The left parameter must for some reason be set to 0. + // I think it should be set to mPaddingLeft but apparently not + mHeader.layout(mPaddingLeft, headerTop, mHeader.getMeasuredWidth() + + mPaddingLeft, headerTop + mHeader.getMeasuredHeight()); + } + } + + @Override + protected void dispatchDraw(Canvas canvas) { + // Only draw the list here. + // The header should be drawn right after the lists children are drawn. + // This is done so that the header is above the list items + // but below the list decorators (scroll bars etc). + drawChild(canvas, mList, 0); + } + + // Reset values tied the header. also remove header form layout + // This is called in response to the data set or the adapter changing + private void clearHeader() { + if (mHeader != null) { + removeView(mHeader); + mHeader = null; + mHeaderId = null; + mHeaderPosition = null; + mHeaderOffset = null; + + // reset the top clipping length + mList.setTopClippingLength(0); + updateHeaderVisibilities(); + } + } + + private void updateOrClearHeader(int firstVisiblePosition) { + final int adapterCount = mAdapter == null ? 0 : mAdapter.getCount(); + if (adapterCount == 0 || !mAreHeadersSticky) { + return; + } + + final int headerViewCount = mList.getHeaderViewsCount(); + final int realFirstVisibleItem = firstVisiblePosition - headerViewCount; + + // It is not a mistake to call getFirstVisiblePosition() here. + // Most of the time getFixedFirstVisibleItem() should be called + // but that does not work great together with getChildAt() + final boolean doesListHaveChildren = mList.getChildCount() != 0; + final boolean isFirstViewBelowTop = doesListHaveChildren && mList + .getFirstVisiblePosition() == 0 + && mList.getChildAt(0).getTop() > (mClippingToPadding ? mPaddingTop : 0); + final boolean isFirstVisibleItemOutsideAdapterRange = realFirstVisibleItem > adapterCount - 1 + || realFirstVisibleItem < 0; + if (!doesListHaveChildren || isFirstVisibleItemOutsideAdapterRange + || isFirstViewBelowTop) { clearHeader(); - return; - } - - updateHeader(realFirstVisibleItem); - } - - private void updateHeader(int firstVisiblePosition) { - - // check if there is a new header should be sticky - if (mHeaderPosition == null || mHeaderPosition != firstVisiblePosition) { - mHeaderPosition = firstVisiblePosition; - final long headerId = mAdapter.getHeaderId(firstVisiblePosition); - if (mHeaderId == null || mHeaderId != headerId) { - mHeaderId = headerId; - final View header = mAdapter.getHeaderView(mHeaderPosition, - mHeader, this); - if (mHeader != header) { - if (header == null) { - throw new NullPointerException("header may not be null"); - } - swapHeader(header); - } - - ensureHeaderHasCorrectLayoutParams(mHeader); - measureHeader(mHeader); - - // Reset mHeaderOffset to null ensuring - // that it will be set on the header and - // not skipped for performance reasons. - mHeaderOffset = null; - } - } - - int headerOffset = 0; - - // Calculate new header offset - // Skip looking at the first view. it never matters because it always - // results in a headerOffset = 0 - int headerBottom = mHeader.getMeasuredHeight() - + (mClippingToPadding ? mPaddingTop : 0); - for (int i = 0; i < mList.getChildCount(); i++) { - final View child = mList.getChildAt(i); - final boolean doesChildHaveHeader = child instanceof WrapperView - && ((WrapperView) child).hasHeader(); - final boolean isChildFooter = mList.containsFooterView(child); - if (child.getTop() >= (mClippingToPadding ? mPaddingTop : 0) - && (doesChildHaveHeader || isChildFooter)) { - headerOffset = Math.min(child.getTop() - headerBottom, 0); - break; - } - } - - setHeaderOffet(headerOffset); - - if (!mIsDrawingListUnderStickyHeader) { - mList.setTopClippingLength(mHeader.getMeasuredHeight() - + mHeaderOffset); - } - - updateHeaderVisibilities(); - } - - private void swapHeader(View newHeader) { - if (mHeader != null) { - removeView(mHeader); - } - mHeader = newHeader; - addView(mHeader); - mHeader.setOnClickListener(new OnClickListener() { - - @Override - public void onClick(View v) { - if (mOnHeaderClickListener != null) { - mOnHeaderClickListener.onHeaderClick( - StickyListHeadersListView.this, mHeader, - mHeaderPosition, mHeaderId, true); - } - } - - }); - } - - // hides the headers in the list under the sticky header. - // Makes sure the other ones are showing - private void updateHeaderVisibilities() { - int top; - if (mHeader != null) { - top = mHeader.getMeasuredHeight() - + (mHeaderOffset != null ? mHeaderOffset : 0); - } else { + return; + } + + updateHeader(realFirstVisibleItem); + } + + private void updateHeader(int firstVisiblePosition) { + + // check if there is a new header should be sticky + if (mHeaderPosition == null || mHeaderPosition != firstVisiblePosition) { + mHeaderPosition = firstVisiblePosition; + final long headerId = mAdapter.getHeaderId(firstVisiblePosition); + if (mHeaderId == null || mHeaderId != headerId) { + mHeaderId = headerId; + final View header = mAdapter.getHeaderView(mHeaderPosition, + mHeader, this); + if (mHeader != header) { + if (header == null) { + throw new NullPointerException("header may not be null"); + } + swapHeader(header); + } + + ensureHeaderHasCorrectLayoutParams(mHeader); + measureHeader(mHeader); + + // Reset mHeaderOffset to null ensuring + // that it will be set on the header and + // not skipped for performance reasons. + mHeaderOffset = null; + } + } + + int headerOffset = 0; + + // Calculate new header offset + // Skip looking at the first view. it never matters because it always + // results in a headerOffset = 0 + int headerBottom = mHeader.getMeasuredHeight() + + (mClippingToPadding ? mPaddingTop : 0); + for (int i = 0; i < mList.getChildCount(); i++) { + final View child = mList.getChildAt(i); + final boolean doesChildHaveHeader = child instanceof WrapperView + && ((WrapperView) child).hasHeader(); + final boolean isChildFooter = mList.containsFooterView(child); + if (child.getTop() >= (mClippingToPadding ? mPaddingTop : 0) + && (doesChildHaveHeader || isChildFooter)) { + headerOffset = Math.min(child.getTop() - headerBottom, 0); + break; + } + } + + setHeaderOffet(headerOffset); + + if (!mIsDrawingListUnderStickyHeader) { + mList.setTopClippingLength(mHeader.getMeasuredHeight() + + mHeaderOffset); + } + + updateHeaderVisibilities(); + } + + private void swapHeader(View newHeader) { + if (mHeader != null) { + removeView(mHeader); + } + mHeader = newHeader; + addView(mHeader); + mHeader.setOnClickListener(new OnClickListener() { + + @Override + public void onClick(View v) { + if (mOnHeaderClickListener != null) { + mOnHeaderClickListener.onHeaderClick( + StickyListHeadersListView.this, mHeader, + mHeaderPosition, mHeaderId, true); + } + } + + }); + } + + // hides the headers in the list under the sticky header. + // Makes sure the other ones are showing + private void updateHeaderVisibilities() { + int top; + if (mHeader != null) { + top = mHeader.getMeasuredHeight() + + (mHeaderOffset != null ? mHeaderOffset : 0); + } else { top = mClippingToPadding ? mPaddingTop : 0; - } - int childCount = mList.getChildCount(); - for (int i = 0; i < childCount; i++) { - View child = mList.getChildAt(i); - if (!(child instanceof WrapperView)) { - continue; - } + } + int childCount = mList.getChildCount(); + for (int i = 0; i < childCount; i++) { + + // ensure child is a wrapper view + View child = mList.getChildAt(i); + if (!(child instanceof WrapperView)) { + continue; + } + // ensure wrapper view child has a header WrapperView wrapperViewChild = (WrapperView) child; if (!wrapperViewChild.hasHeader()) { continue; } + // update header views visibility View childHeader = wrapperViewChild.mHeader; if (wrapperViewChild.getTop() < top) { if (childHeader.getVisibility() != View.INVISIBLE) { @@ -421,288 +443,295 @@ private void updateHeaderVisibilities() { childHeader.setVisibility(View.VISIBLE); } } - } - } - - // Wrapper around setting the header offset in different ways depending on - // the API version - @SuppressLint("NewApi") - private void setHeaderOffet(int offset) { - if (mHeaderOffset == null || mHeaderOffset != offset) { - mHeaderOffset = offset; - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { - mHeader.setTranslationY(mHeaderOffset); - } else { - MarginLayoutParams params = (MarginLayoutParams) mHeader - .getLayoutParams(); - params.topMargin = mHeaderOffset; - mHeader.setLayoutParams(params); - } - } - } - - private class AdapterWrapperDataSetObserver extends DataSetObserver { - - @Override - public void onChanged() { - clearHeader(); - } - - @Override - public void onInvalidated() { - clearHeader(); - } - - } - - private class WrapperListScrollListener implements OnScrollListener { - - @Override - public void onScroll(AbsListView view, int firstVisibleItem, - int visibleItemCount, int totalItemCount) { - if (mOnScrollListenerDelegate != null) { - mOnScrollListenerDelegate.onScroll(view, firstVisibleItem, - visibleItemCount, totalItemCount); - } - updateOrClearHeader(mList.getFixedFirstVisibleItem()); - } - - @Override - public void onScrollStateChanged(AbsListView view, int scrollState) { - if (mOnScrollListenerDelegate != null) { - mOnScrollListenerDelegate.onScrollStateChanged(view, - scrollState); - } - } - - } - - private class WrapperViewListLifeCycleListener implements LifeCycleListener { - - @Override - public void onDispatchDrawOccurred(Canvas canvas) { - // onScroll is not called often at all before froyo - // therefor we need to update the header here as well. - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.FROYO) { - updateOrClearHeader(mList.getFixedFirstVisibleItem()); - } - if (mHeader != null) { - if (mClippingToPadding) { - canvas.save(); - canvas.clipRect(0, mPaddingTop, getRight(), getBottom()); - drawChild(canvas, mHeader, 0); - canvas.restore(); - } else { - drawChild(canvas, mHeader, 0); - } - } - } - - } - - private class AdapterWrapperHeaderClickHandler implements - AdapterWrapper.OnHeaderClickListener { - - @Override - public void onHeaderClick(View header, int itemPosition, long headerId) { - mOnHeaderClickListener.onHeaderClick( - StickyListHeadersListView.this, header, itemPosition, - headerId, false); - } - - } - - private boolean isStartOfSection(int position) { - return position == 0 - || mAdapter.getHeaderId(position) != mAdapter - .getHeaderId(position - 1); - } - - private int getHeaderOverlap(int position) { - boolean isStartOfSection = isStartOfSection(position); - if (!isStartOfSection) { - View header = mAdapter.getHeaderView(position, null, mList); - if (header == null) { - throw new NullPointerException("header may not be null"); - } - ensureHeaderHasCorrectLayoutParams(header); - measureHeader(header); - return header.getMeasuredHeight(); - } - return 0; - } + } + } + + // Wrapper around setting the header offset in different ways depending on + // the API version + @SuppressLint("NewApi") + private void setHeaderOffet(int offset) { + if (mHeaderOffset == null || mHeaderOffset != offset) { + mHeaderOffset = offset; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { + mHeader.setTranslationY(mHeaderOffset); + } else { + MarginLayoutParams params = (MarginLayoutParams) mHeader + .getLayoutParams(); + params.topMargin = mHeaderOffset; + mHeader.setLayoutParams(params); + } + if (mOnStickyHeaderOffsetChangedListener != null) { + mOnStickyHeaderOffsetChangedListener + .onStickyHeaderOffsetChanged(this, mHeader, -mHeaderOffset); + } + } + } + + private class AdapterWrapperDataSetObserver extends DataSetObserver { + + @Override + public void onChanged() { + clearHeader(); + } + + @Override + public void onInvalidated() { + clearHeader(); + } + + } + + private class WrapperListScrollListener implements OnScrollListener { + + @Override + public void onScroll(AbsListView view, int firstVisibleItem, + int visibleItemCount, int totalItemCount) { + if (mOnScrollListenerDelegate != null) { + mOnScrollListenerDelegate.onScroll(view, firstVisibleItem, + visibleItemCount, totalItemCount); + } + updateOrClearHeader(mList.getFixedFirstVisibleItem()); + } + + @Override + public void onScrollStateChanged(AbsListView view, int scrollState) { + if (mOnScrollListenerDelegate != null) { + mOnScrollListenerDelegate.onScrollStateChanged(view, + scrollState); + } + } + + } + + private class WrapperViewListLifeCycleListener implements LifeCycleListener { + + @Override + public void onDispatchDrawOccurred(Canvas canvas) { + // onScroll is not called often at all before froyo + // therefor we need to update the header here as well. + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.FROYO) { + updateOrClearHeader(mList.getFixedFirstVisibleItem()); + } + if (mHeader != null) { + if (mClippingToPadding) { + canvas.save(); + canvas.clipRect(0, mPaddingTop, getRight(), getBottom()); + drawChild(canvas, mHeader, 0); + canvas.restore(); + } else { + drawChild(canvas, mHeader, 0); + } + } + } + + } + + private class AdapterWrapperHeaderClickHandler implements + AdapterWrapper.OnHeaderClickListener { + + @Override + public void onHeaderClick(View header, int itemPosition, long headerId) { + mOnHeaderClickListener.onHeaderClick( + StickyListHeadersListView.this, header, itemPosition, + headerId, false); + } + + } + + private boolean isStartOfSection(int position) { + return position == 0 + || mAdapter.getHeaderId(position) != mAdapter + .getHeaderId(position - 1); + } + + private int getHeaderOverlap(int position) { + boolean isStartOfSection = isStartOfSection(position); + if (!isStartOfSection) { + View header = mAdapter.getHeaderView(position, null, mList); + if (header == null) { + throw new NullPointerException("header may not be null"); + } + ensureHeaderHasCorrectLayoutParams(header); + measureHeader(header); + return header.getMeasuredHeight(); + } + return 0; + } /* ---------- StickyListHeaders specific API ---------- */ - public void setAreHeadersSticky(boolean areHeadersSticky) { - mAreHeadersSticky = areHeadersSticky; - if (!areHeadersSticky) { - clearHeader(); - } else { - updateOrClearHeader(mList.getFixedFirstVisibleItem()); - } - // invalidating the list will trigger dispatchDraw() - mList.invalidate(); - } - - public boolean areHeadersSticky() { - return mAreHeadersSticky; - } - - /** - * Use areHeadersSticky() method instead - */ - @Deprecated - public boolean getAreHeadersSticky() { - return areHeadersSticky(); - } - - public void setDrawingListUnderStickyHeader( - boolean drawingListUnderStickyHeader) { - mIsDrawingListUnderStickyHeader = drawingListUnderStickyHeader; - // reset the top clipping length - mList.setTopClippingLength(0); - } - - public boolean isDrawingListUnderStickyHeader() { - return mIsDrawingListUnderStickyHeader; - } - - public void setOnHeaderClickListener( - OnHeaderClickListener onHeaderClickListener) { - mOnHeaderClickListener = onHeaderClickListener; - if (mAdapter != null) { - if (mOnHeaderClickListener != null) { - mAdapter.setOnHeaderClickListener(new AdapterWrapperHeaderClickHandler()); - } else { - mAdapter.setOnHeaderClickListener(null); - } - } - } - - public View getListChildAt(int index) { - return mList.getChildAt(index); - } - - public int getListChildCount() { - return mList.getChildCount(); - } - - /** - * Use the method with extreme caution!! Changing any values on the - * underlying ListView might break everything. - * - * @return the ListView backing this view. - */ - public ListView getWrappedList() { - return mList; - } + public void setAreHeadersSticky(boolean areHeadersSticky) { + mAreHeadersSticky = areHeadersSticky; + if (!areHeadersSticky) { + clearHeader(); + } else { + updateOrClearHeader(mList.getFixedFirstVisibleItem()); + } + // invalidating the list will trigger dispatchDraw() + mList.invalidate(); + } + + public boolean areHeadersSticky() { + return mAreHeadersSticky; + } + + /** + * Use areHeadersSticky() method instead + */ + @Deprecated + public boolean getAreHeadersSticky() { + return areHeadersSticky(); + } + + public void setDrawingListUnderStickyHeader( + boolean drawingListUnderStickyHeader) { + mIsDrawingListUnderStickyHeader = drawingListUnderStickyHeader; + // reset the top clipping length + mList.setTopClippingLength(0); + } + + public boolean isDrawingListUnderStickyHeader() { + return mIsDrawingListUnderStickyHeader; + } + + public void setOnHeaderClickListener(OnHeaderClickListener listener) { + mOnHeaderClickListener = listener; + if (mAdapter != null) { + if (mOnHeaderClickListener != null) { + mAdapter.setOnHeaderClickListener(new AdapterWrapperHeaderClickHandler()); + } else { + mAdapter.setOnHeaderClickListener(null); + } + } + } + + public void setOnStickyHeaderOffsetChangedListener(OnStickyHeaderOffsetChangedListener listener) { + mOnStickyHeaderOffsetChangedListener = listener; + } + + public View getListChildAt(int index) { + return mList.getChildAt(index); + } + + public int getListChildCount() { + return mList.getChildCount(); + } + + /** + * Use the method with extreme caution!! Changing any values on the + * underlying ListView might break everything. + * + * @return the ListView backing this view. + */ + public ListView getWrappedList() { + return mList; + } /* ---------- ListView delegate methods ---------- */ - public void setAdapter(StickyListHeadersAdapter adapter) { - if (adapter == null) { - mList.setAdapter(null); - clearHeader(); - return; - } - if (mAdapter != null) { - mAdapter.unregisterDataSetObserver(mDataSetObserver); - } - - if (adapter instanceof SectionIndexer) { - mAdapter = new SectionIndexerAdapterWrapper(getContext(), adapter); - } else { - mAdapter = new AdapterWrapper(getContext(), adapter); - } - mDataSetObserver = new AdapterWrapperDataSetObserver(); - mAdapter.registerDataSetObserver(mDataSetObserver); - - if (mOnHeaderClickListener != null) { - mAdapter.setOnHeaderClickListener(new AdapterWrapperHeaderClickHandler()); - } else { - mAdapter.setOnHeaderClickListener(null); - } - - mAdapter.setDivider(mDivider, mDividerHeight); - - mList.setAdapter(mAdapter); - clearHeader(); - } - - public StickyListHeadersAdapter getAdapter() { - return mAdapter == null ? null : mAdapter.mDelegate; - } - - public void setDivider(Drawable divider) { - mDivider = divider; - if (mAdapter != null) { - mAdapter.setDivider(mDivider, mDividerHeight); - } - } - - public void setDividerHeight(int dividerHeight) { - mDividerHeight = dividerHeight; - if (mAdapter != null) { - mAdapter.setDivider(mDivider, mDividerHeight); - } - } - - public Drawable getDivider() { - return mDivider; - } - - public int getDividerHeight() { - return mDividerHeight; - } - - public void setOnScrollListener(OnScrollListener onScrollListener) { - mOnScrollListenerDelegate = onScrollListener; - } - - public void setOnItemClickListener(OnItemClickListener listener) { - mList.setOnItemClickListener(listener); - } - - public void setOnItemLongClickListener(OnItemLongClickListener listener) { - mList.setOnItemLongClickListener(listener); - } + public void setAdapter(StickyListHeadersAdapter adapter) { + if (adapter == null) { + mList.setAdapter(null); + clearHeader(); + return; + } + if (mAdapter != null) { + mAdapter.unregisterDataSetObserver(mDataSetObserver); + } + + if (adapter instanceof SectionIndexer) { + mAdapter = new SectionIndexerAdapterWrapper(getContext(), adapter); + } else { + mAdapter = new AdapterWrapper(getContext(), adapter); + } + mDataSetObserver = new AdapterWrapperDataSetObserver(); + mAdapter.registerDataSetObserver(mDataSetObserver); + + if (mOnHeaderClickListener != null) { + mAdapter.setOnHeaderClickListener(new AdapterWrapperHeaderClickHandler()); + } else { + mAdapter.setOnHeaderClickListener(null); + } + + mAdapter.setDivider(mDivider, mDividerHeight); + + mList.setAdapter(mAdapter); + clearHeader(); + } + + public StickyListHeadersAdapter getAdapter() { + return mAdapter == null ? null : mAdapter.mDelegate; + } + + public void setDivider(Drawable divider) { + mDivider = divider; + if (mAdapter != null) { + mAdapter.setDivider(mDivider, mDividerHeight); + } + } + + public void setDividerHeight(int dividerHeight) { + mDividerHeight = dividerHeight; + if (mAdapter != null) { + mAdapter.setDivider(mDivider, mDividerHeight); + } + } + + public Drawable getDivider() { + return mDivider; + } + + public int getDividerHeight() { + return mDividerHeight; + } + + public void setOnScrollListener(OnScrollListener onScrollListener) { + mOnScrollListenerDelegate = onScrollListener; + } + + public void setOnItemClickListener(OnItemClickListener listener) { + mList.setOnItemClickListener(listener); + } + + public void setOnItemLongClickListener(OnItemLongClickListener listener) { + mList.setOnItemLongClickListener(listener); + } public void addHeaderView(View v, Object data, boolean isSelectable) { mList.addHeaderView(v, data, isSelectable); } - public void addHeaderView(View v) { - mList.addHeaderView(v); - } + public void addHeaderView(View v) { + mList.addHeaderView(v); + } - public void removeHeaderView(View v) { - mList.removeHeaderView(v); - } + public void removeHeaderView(View v) { + mList.removeHeaderView(v); + } - public int getHeaderViewsCount() { - return mList.getHeaderViewsCount(); - } + public int getHeaderViewsCount() { + return mList.getHeaderViewsCount(); + } - public void addFooterView(View v) { - mList.addFooterView(v); - } + public void addFooterView(View v) { + mList.addFooterView(v); + } - public void removeFooterView(View v) { - mList.removeFooterView(v); - } + public void removeFooterView(View v) { + mList.removeFooterView(v); + } - public int getFooterViewsCount() { - return mList.getFooterViewsCount(); - } + public int getFooterViewsCount() { + return mList.getFooterViewsCount(); + } - public void setEmptyView(View v) { - mList.setEmptyView(v); - } + public void setEmptyView(View v) { + mList.setEmptyView(v); + } - public View getEmptyView() { - return mList.getEmptyView(); - } + public View getEmptyView() { + return mList.getEmptyView(); + } @Override public void setVerticalScrollBarEnabled(boolean verticalScrollBarEnabled) { @@ -714,213 +743,213 @@ public void setHorizontalScrollBarEnabled(boolean horizontalScrollBarEnabled) { mList.setHorizontalScrollBarEnabled(horizontalScrollBarEnabled); } - @TargetApi(Build.VERSION_CODES.FROYO) - public void smoothScrollBy(int distance, int duration) { - requireSdkVersion(Build.VERSION_CODES.FROYO); - mList.smoothScrollBy(distance, duration); - } - - @TargetApi(Build.VERSION_CODES.HONEYCOMB) - public void smoothScrollByOffset(int offset) { - requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); - mList.smoothScrollByOffset(offset); - } - - @SuppressLint("NewApi") - @TargetApi(Build.VERSION_CODES.FROYO) - public void smoothScrollToPosition(int position) { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { - mList.smoothScrollToPosition(position); - } else { - int offset = mAdapter == null ? 0 : getHeaderOverlap(position); - offset -= mClippingToPadding ? 0 : mPaddingTop; - mList.smoothScrollToPositionFromTop(position, offset); - } - } - - @TargetApi(Build.VERSION_CODES.FROYO) - public void smoothScrollToPosition(int position, int boundPosition) { - requireSdkVersion(Build.VERSION_CODES.FROYO); - mList.smoothScrollToPosition(position, boundPosition); - } - - @TargetApi(Build.VERSION_CODES.HONEYCOMB) - public void smoothScrollToPositionFromTop(int position, int offset) { - requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); - offset += mAdapter == null ? 0 : getHeaderOverlap(position); - offset -= mClippingToPadding ? 0 : mPaddingTop; - mList.smoothScrollToPositionFromTop(position, offset); - } - - @TargetApi(Build.VERSION_CODES.HONEYCOMB) - public void smoothScrollToPositionFromTop(int position, int offset, - int duration) { - requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); - offset += mAdapter == null ? 0 : getHeaderOverlap(position); - offset -= mClippingToPadding ? 0 : mPaddingTop; - mList.smoothScrollToPositionFromTop(position, offset, duration); - } - - public void setSelection(int position) { - setSelectionFromTop(position, 0); - } - - public void setSelectionAfterHeaderView() { - mList.setSelectionAfterHeaderView(); - } - - public void setSelectionFromTop(int position, int y) { - y += mAdapter == null ? 0 : getHeaderOverlap(position); - y -= mClippingToPadding ? 0 : mPaddingTop; - mList.setSelectionFromTop(position, y); - } - - public void setSelector(Drawable sel) { - mList.setSelector(sel); - } - - public void setSelector(int resID) { - mList.setSelector(resID); - } - - public int getFirstVisiblePosition() { - return mList.getFirstVisiblePosition(); - } - - public int getLastVisiblePosition() { - return mList.getLastVisiblePosition(); - } - - public void setChoiceMode(int choiceMode) { - mList.setChoiceMode(choiceMode); - } - - public void setItemChecked(int position, boolean value) { - mList.setItemChecked(position, value); - } - - @TargetApi(Build.VERSION_CODES.HONEYCOMB) - public int getCheckedItemCount() { - requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); - return mList.getCheckedItemCount(); - } - - @TargetApi(Build.VERSION_CODES.FROYO) - public long[] getCheckedItemIds() { - requireSdkVersion(Build.VERSION_CODES.FROYO); - return mList.getCheckedItemIds(); - } - - public int getCheckedItemPosition() { - return mList.getCheckedItemPosition(); - } - - public SparseBooleanArray getCheckedItemPositions() { - return mList.getCheckedItemPositions(); - } - - public int getCount() { - return mList.getCount(); - } - - public Object getItemAtPosition(int position) { - return mList.getItemAtPosition(position); - } - - public long getItemIdAtPosition(int position) { - return mList.getItemIdAtPosition(position); - } - - public void setOnCreateContextMenuListener(OnCreateContextMenuListener l) { - mList.setOnCreateContextMenuListener(l); - } - - public boolean showContextMenu() { - return mList.showContextMenu(); - } - - public void invalidateViews() { - mList.invalidateViews(); - } - - @Override - public void setClipToPadding(boolean clipToPadding) { - if (mList != null) { - mList.setClipToPadding(clipToPadding); - } - mClippingToPadding = clipToPadding; - } - - @Override - public void setPadding(int left, int top, int right, int bottom) { - mPaddingLeft = left; - mPaddingTop = top; - mPaddingRight = right; - mPaddingBottom = bottom; - - if (mList != null) { - mList.setPadding(left, top, right, bottom); - } - super.setPadding(0, 0, 0, 0); - requestLayout(); - } - - @Override - public int getPaddingLeft() { - return mPaddingLeft; - } - - @Override - public int getPaddingTop() { - return mPaddingTop; - } - - @Override - public int getPaddingRight() { - return mPaddingRight; - } - - @Override - public int getPaddingBottom() { - return mPaddingBottom; - } - - public void setFastScrollEnabled(boolean fastScrollEnabled) { - mList.setFastScrollEnabled(fastScrollEnabled); - } - - /** - * @see android.widget.AbsListView#setFastScrollAlwaysVisible(boolean) - * @throws ApiLevelTooLowException on pre-Honeycomb device. - */ - @TargetApi(Build.VERSION_CODES.HONEYCOMB) - public void setFastScrollAlwaysVisible(boolean alwaysVisible) { - requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { - mList.setFastScrollAlwaysVisible(alwaysVisible); - } - } - - /** - * @see android.widget.AbsListView#isFastScrollAlwaysVisible() - * @return true if the fast scroller will always show. False on pre-Honeycomb devices. - */ - @TargetApi(Build.VERSION_CODES.HONEYCOMB) - public boolean isFastScrollAlwaysVisible(){ - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { - return false; - } - return mList.isFastScrollAlwaysVisible(); - } - - private void requireSdkVersion(int versionCode) { - if (Build.VERSION.SDK_INT < versionCode) { - throw new ApiLevelTooLowException(versionCode); - } - } - - public int getPositionForView(View view) { - return mList.getPositionForView(view); - } + @TargetApi(Build.VERSION_CODES.FROYO) + public void smoothScrollBy(int distance, int duration) { + requireSdkVersion(Build.VERSION_CODES.FROYO); + mList.smoothScrollBy(distance, duration); + } + + @TargetApi(Build.VERSION_CODES.HONEYCOMB) + public void smoothScrollByOffset(int offset) { + requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); + mList.smoothScrollByOffset(offset); + } + + @SuppressLint("NewApi") + @TargetApi(Build.VERSION_CODES.FROYO) + public void smoothScrollToPosition(int position) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { + mList.smoothScrollToPosition(position); + } else { + int offset = mAdapter == null ? 0 : getHeaderOverlap(position); + offset -= mClippingToPadding ? 0 : mPaddingTop; + mList.smoothScrollToPositionFromTop(position, offset); + } + } + + @TargetApi(Build.VERSION_CODES.FROYO) + public void smoothScrollToPosition(int position, int boundPosition) { + requireSdkVersion(Build.VERSION_CODES.FROYO); + mList.smoothScrollToPosition(position, boundPosition); + } + + @TargetApi(Build.VERSION_CODES.HONEYCOMB) + public void smoothScrollToPositionFromTop(int position, int offset) { + requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); + offset += mAdapter == null ? 0 : getHeaderOverlap(position); + offset -= mClippingToPadding ? 0 : mPaddingTop; + mList.smoothScrollToPositionFromTop(position, offset); + } + + @TargetApi(Build.VERSION_CODES.HONEYCOMB) + public void smoothScrollToPositionFromTop(int position, int offset, + int duration) { + requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); + offset += mAdapter == null ? 0 : getHeaderOverlap(position); + offset -= mClippingToPadding ? 0 : mPaddingTop; + mList.smoothScrollToPositionFromTop(position, offset, duration); + } + + public void setSelection(int position) { + setSelectionFromTop(position, 0); + } + + public void setSelectionAfterHeaderView() { + mList.setSelectionAfterHeaderView(); + } + + public void setSelectionFromTop(int position, int y) { + y += mAdapter == null ? 0 : getHeaderOverlap(position); + y -= mClippingToPadding ? 0 : mPaddingTop; + mList.setSelectionFromTop(position, y); + } + + public void setSelector(Drawable sel) { + mList.setSelector(sel); + } + + public void setSelector(int resID) { + mList.setSelector(resID); + } + + public int getFirstVisiblePosition() { + return mList.getFirstVisiblePosition(); + } + + public int getLastVisiblePosition() { + return mList.getLastVisiblePosition(); + } + + public void setChoiceMode(int choiceMode) { + mList.setChoiceMode(choiceMode); + } + + public void setItemChecked(int position, boolean value) { + mList.setItemChecked(position, value); + } + + @TargetApi(Build.VERSION_CODES.HONEYCOMB) + public int getCheckedItemCount() { + requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); + return mList.getCheckedItemCount(); + } + + @TargetApi(Build.VERSION_CODES.FROYO) + public long[] getCheckedItemIds() { + requireSdkVersion(Build.VERSION_CODES.FROYO); + return mList.getCheckedItemIds(); + } + + public int getCheckedItemPosition() { + return mList.getCheckedItemPosition(); + } + + public SparseBooleanArray getCheckedItemPositions() { + return mList.getCheckedItemPositions(); + } + + public int getCount() { + return mList.getCount(); + } + + public Object getItemAtPosition(int position) { + return mList.getItemAtPosition(position); + } + + public long getItemIdAtPosition(int position) { + return mList.getItemIdAtPosition(position); + } + + public void setOnCreateContextMenuListener(OnCreateContextMenuListener l) { + mList.setOnCreateContextMenuListener(l); + } + + public boolean showContextMenu() { + return mList.showContextMenu(); + } + + public void invalidateViews() { + mList.invalidateViews(); + } + + @Override + public void setClipToPadding(boolean clipToPadding) { + if (mList != null) { + mList.setClipToPadding(clipToPadding); + } + mClippingToPadding = clipToPadding; + } + + @Override + public void setPadding(int left, int top, int right, int bottom) { + mPaddingLeft = left; + mPaddingTop = top; + mPaddingRight = right; + mPaddingBottom = bottom; + + if (mList != null) { + mList.setPadding(left, top, right, bottom); + } + super.setPadding(0, 0, 0, 0); + requestLayout(); + } + + @Override + public int getPaddingLeft() { + return mPaddingLeft; + } + + @Override + public int getPaddingTop() { + return mPaddingTop; + } + + @Override + public int getPaddingRight() { + return mPaddingRight; + } + + @Override + public int getPaddingBottom() { + return mPaddingBottom; + } + + public void setFastScrollEnabled(boolean fastScrollEnabled) { + mList.setFastScrollEnabled(fastScrollEnabled); + } + + /** + * @throws ApiLevelTooLowException on pre-Honeycomb device. + * @see android.widget.AbsListView#setFastScrollAlwaysVisible(boolean) + */ + @TargetApi(Build.VERSION_CODES.HONEYCOMB) + public void setFastScrollAlwaysVisible(boolean alwaysVisible) { + requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { + mList.setFastScrollAlwaysVisible(alwaysVisible); + } + } + + /** + * @return true if the fast scroller will always show. False on pre-Honeycomb devices. + * @see android.widget.AbsListView#isFastScrollAlwaysVisible() + */ + @TargetApi(Build.VERSION_CODES.HONEYCOMB) + public boolean isFastScrollAlwaysVisible() { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { + return false; + } + return mList.isFastScrollAlwaysVisible(); + } + + private void requireSdkVersion(int versionCode) { + if (Build.VERSION.SDK_INT < versionCode) { + throw new ApiLevelTooLowException(versionCode); + } + } + + public int getPositionForView(View view) { + return mList.getPositionForView(view); + } } diff --git a/sample/res/values/colors.xml b/sample/res/values/colors.xml index 1880a25b..2e1fe59c 100644 --- a/sample/res/values/colors.xml +++ b/sample/res/values/colors.xml @@ -1,6 +1,6 @@ - #aae74c3c - #aac0392b + #ffe74c3c + #ffc0392b \ No newline at end of file diff --git a/sample/src/se/emilsjolander/stickylistheaders/TestActivity.java b/sample/src/se/emilsjolander/stickylistheaders/TestActivity.java index 792682f3..2553b677 100644 --- a/sample/src/se/emilsjolander/stickylistheaders/TestActivity.java +++ b/sample/src/se/emilsjolander/stickylistheaders/TestActivity.java @@ -1,5 +1,6 @@ package se.emilsjolander.stickylistheaders; +import android.os.Build; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.view.Menu; @@ -12,7 +13,8 @@ * @author Emil Sjölander */ public class TestActivity extends FragmentActivity implements - AdapterView.OnItemClickListener, StickyListHeadersListView.OnHeaderClickListener { + AdapterView.OnItemClickListener, StickyListHeadersListView.OnHeaderClickListener, + StickyListHeadersListView.OnStickyHeaderOffsetChangedListener { private TestBaseAdapter mAdapter; @@ -26,6 +28,7 @@ public void onCreate(Bundle savedInstanceState) { StickyListHeadersListView stickyList = (StickyListHeadersListView) findViewById(R.id.list); stickyList.setOnItemClickListener(this); stickyList.setOnHeaderClickListener(this); + stickyList.setOnStickyHeaderOffsetChangedListener(this); // mStickyList.addHeaderView(inflater.inflate(R.layout.list_header, null)); // mStickyList.addFooterView(inflater.inflate(R.layout.list_footer, null)); @@ -74,4 +77,10 @@ public void onHeaderClick(StickyListHeadersListView l, View header, Toast.LENGTH_SHORT).show(); } + @Override + public void onStickyHeaderOffsetChanged(StickyListHeadersListView l, View header, int offset) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { + header.setAlpha(1-(offset/(float)header.getMeasuredHeight())); + } + } } \ No newline at end of file From 2c28469046a433b50db907414b46166f52870ced Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Thu, 14 Nov 2013 14:02:39 +0100 Subject: [PATCH 77/90] fixed readme copy paste error --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 17b59e2f..69c2125d 100644 --- a/README.md +++ b/README.md @@ -168,7 +168,7 @@ public boolean areHeadersSticky(); A `OnHeaderClickListener` is the header version of OnItemClickListener. This is the setter for it and the interface of the listener. The currentlySticky boolean flag indicated if the header that was clicked was sticking to the top at the time it was clicked. ```java -public void setOnHeaderClickListener(OnHeaderClickListener onHeaderClickListener); +public void setOnHeaderClickListener(OnHeaderClickListener listener); public interface OnHeaderClickListener { public void onHeaderClick(StickyListHeadersListView l, View header, int itemPosition, long headerId, boolean currentlySticky); @@ -177,10 +177,10 @@ public interface OnHeaderClickListener { A `OnStickyHeaderOffsetChangedListener` is a Listener used for listening to when the sticky header slides out of the screen. The offset parameter will slowly grow to be the same size as the headers height. Use the listeners callback to transform the header in any way you see fit, the standard android contacts app dims the text for example. ```java -public void setOnHeaderClickListener(OnHeaderClickListener onHeaderClickListener); +public void setOnStickyHeaderOffsetChangedListener(OnStickyHeaderOffsetChangedListener listener); -public interface OnHeaderClickListener { - public void onHeaderClick(StickyListHeadersListView l, View header, int itemPosition, long headerId, boolean currentlySticky); +public interface OnStickyHeaderOffsetChangedListener { + public void onStickyHeaderOffsetChanged(StickyListHeadersListView l, View header, int offset); } ``` From d2b4d0c3c8f5ff7c4aa06946e5fff10719aaf4f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Sun, 17 Nov 2013 23:33:06 +0100 Subject: [PATCH 78/90] changed some structure --- .../StickyListHeadersListView.java | 111 ++++++------------ 1 file changed, 33 insertions(+), 78 deletions(-) diff --git a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java index dac60e7f..5aec3756 100644 --- a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java @@ -92,8 +92,7 @@ public StickyListHeadersListView(Context context, AttributeSet attrs) { } @TargetApi(Build.VERSION_CODES.HONEYCOMB) - public StickyListHeadersListView(Context context, AttributeSet attrs, - int defStyle) { + public StickyListHeadersListView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // Initialize the list @@ -111,58 +110,35 @@ public StickyListHeadersListView(Context context, AttributeSet attrs, addView(mList); if (attrs != null) { - TypedArray a = context.getTheme().obtainStyledAttributes(attrs, - R.styleable.StickyListHeadersListView, 0, 0); + TypedArray a = context.getTheme().obtainStyledAttributes(attrs,R.styleable.StickyListHeadersListView, 0, 0); try { // Android attributes if (a.hasValue(R.styleable.StickyListHeadersListView_android_padding)) { - int padding = a - .getDimensionPixelSize( - R.styleable.StickyListHeadersListView_android_padding, - 0); + int padding = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_padding, 0); mPaddingLeft = padding; mPaddingTop = padding; mPaddingRight = padding; mPaddingBottom = padding; } else { - mPaddingLeft = a - .getDimensionPixelSize( - R.styleable.StickyListHeadersListView_android_paddingLeft, - 0); - mPaddingTop = a - .getDimensionPixelSize( - R.styleable.StickyListHeadersListView_android_paddingTop, - 0); - mPaddingRight = a - .getDimensionPixelSize( - R.styleable.StickyListHeadersListView_android_paddingRight, - 0); - mPaddingBottom = a - .getDimensionPixelSize( - R.styleable.StickyListHeadersListView_android_paddingBottom, - 0); + mPaddingLeft = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_paddingLeft, 0); + mPaddingTop = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_paddingTop, 0); + mPaddingRight = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_paddingRight, 0); + mPaddingBottom = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_paddingBottom, 0); } setPadding(mPaddingLeft, mPaddingTop, mPaddingRight, mPaddingBottom); // Set clip to padding on the list and reset value to default on // wrapper - mClippingToPadding = a - .getBoolean( - R.styleable.StickyListHeadersListView_android_clipToPadding, - true); + mClippingToPadding = a.getBoolean(R.styleable.StickyListHeadersListView_android_clipToPadding, true); super.setClipToPadding(true); mList.setClipToPadding(mClippingToPadding); // ListView attributes - mList.setFadingEdgeLength(a - .getDimensionPixelSize( - R.styleable.StickyListHeadersListView_android_fadingEdgeLength, - mList.getVerticalFadingEdgeLength())); - final int fadingEdge = a - .getInt(R.styleable.StickyListHeadersListView_android_requiresFadingEdge, - 0); + mList.setFadingEdgeLength(a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_fadingEdgeLength, + mList.getVerticalFadingEdgeLength())); + final int fadingEdge = a.getInt(R.styleable.StickyListHeadersListView_android_requiresFadingEdge, 0); if (fadingEdge == 0x00001000) { mList.setVerticalFadingEdgeEnabled(false); mList.setHorizontalFadingEdgeEnabled(true); @@ -174,58 +150,37 @@ public StickyListHeadersListView(Context context, AttributeSet attrs, mList.setHorizontalFadingEdgeEnabled(false); } mList.setCacheColorHint(a - .getColor( - R.styleable.StickyListHeadersListView_android_cacheColorHint, - mList.getCacheColorHint())); + .getColor(R.styleable.StickyListHeadersListView_android_cacheColorHint, mList.getCacheColorHint())); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { - mList.setChoiceMode(a - .getInt(R.styleable.StickyListHeadersListView_android_choiceMode, - mList.getChoiceMode())); + mList.setChoiceMode(a.getInt(R.styleable.StickyListHeadersListView_android_choiceMode, + mList.getChoiceMode())); } - mList.setDrawSelectorOnTop(a - .getBoolean( - R.styleable.StickyListHeadersListView_android_drawSelectorOnTop, - false)); - mList.setFastScrollEnabled(a - .getBoolean( - R.styleable.StickyListHeadersListView_android_fastScrollEnabled, - mList.isFastScrollEnabled())); + mList.setDrawSelectorOnTop(a.getBoolean(R.styleable.StickyListHeadersListView_android_drawSelectorOnTop, false)); + mList.setFastScrollEnabled(a.getBoolean(R.styleable.StickyListHeadersListView_android_fastScrollEnabled, + mList.isFastScrollEnabled())); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { - mList.setFastScrollAlwaysVisible(a - .getBoolean( - R.styleable.StickyListHeadersListView_android_fastScrollAlwaysVisible, - mList.isFastScrollAlwaysVisible())); + mList.setFastScrollAlwaysVisible(a.getBoolean( + R.styleable.StickyListHeadersListView_android_fastScrollAlwaysVisible, + mList.isFastScrollAlwaysVisible())); } - mList.setScrollBarStyle(a - .getInt(R.styleable.StickyListHeadersListView_android_scrollbarStyle, - 0)); - final Drawable selector = a - .getDrawable(R.styleable.StickyListHeadersListView_android_listSelector); - if (selector != null) { - mList.setSelector(selector); + mList.setScrollBarStyle(a.getInt(R.styleable.StickyListHeadersListView_android_scrollbarStyle, 0)); + if (a.hasValue(R.styleable.StickyListHeadersListView_android_listSelector)) { + mList.setSelector(a.getDrawable(R.styleable.StickyListHeadersListView_android_listSelector)); } - mList.setScrollingCacheEnabled(a - .getBoolean( - R.styleable.StickyListHeadersListView_android_scrollingCache, - mList.isScrollingCacheEnabled())); - final Drawable divider = a - .getDrawable(R.styleable.StickyListHeadersListView_android_divider); - if (divider != null) { - mDivider = divider; + mList.setScrollingCacheEnabled(a.getBoolean(R.styleable.StickyListHeadersListView_android_scrollingCache, + mList.isScrollingCacheEnabled())); + if (a.hasValue(R.styleable.StickyListHeadersListView_android_divider)) { + mDivider = a.getDrawable(R.styleable.StickyListHeadersListView_android_divider); } - mDividerHeight = a - .getDimensionPixelSize( - R.styleable.StickyListHeadersListView_android_dividerHeight, - mDividerHeight); + + mDividerHeight = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_dividerHeight, + mDividerHeight); // StickyListHeaders attributes - mAreHeadersSticky = a.getBoolean( - R.styleable.StickyListHeadersListView_hasStickyHeaders, + mAreHeadersSticky = a.getBoolean(R.styleable.StickyListHeadersListView_hasStickyHeaders, true); + mIsDrawingListUnderStickyHeader = a.getBoolean( + R.styleable.StickyListHeadersListView_isDrawingListUnderStickyHeader, true); - mIsDrawingListUnderStickyHeader = a - .getBoolean( - R.styleable.StickyListHeadersListView_isDrawingListUnderStickyHeader, - true); } finally { a.recycle(); } From dc20a8d9bd92a0b8ce253edfb180d9179984baf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20Sj=C3=B6lander?= Date: Mon, 18 Nov 2013 10:46:43 +0100 Subject: [PATCH 79/90] make a temporary listview for attrs Making a temporary attrs listview will make sure that we get the correct default styling of the wrapped list. --- library/res/values/attrs.xml | 18 +-- .../StickyListHeadersListView.java | 106 ++++++------------ 2 files changed, 35 insertions(+), 89 deletions(-) diff --git a/library/res/values/attrs.xml b/library/res/values/attrs.xml index a626288f..afbd3563 100644 --- a/library/res/values/attrs.xml +++ b/library/res/values/attrs.xml @@ -2,27 +2,11 @@ - + - - - - - - - - - - - - - - - - diff --git a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java index 5aec3756..5ffe670f 100644 --- a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java @@ -95,99 +95,61 @@ public StickyListHeadersListView(Context context, AttributeSet attrs) { public StickyListHeadersListView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); - // Initialize the list + // Initialize the wrapped list mList = new WrapperViewList(context); - mDivider = mList.getDivider(); - mDividerHeight = mList.getDividerHeight(); - // null out divider, dividers are handled by adapter so they look good - // with headers + // null out divider, dividers are handled by adapter so they look good with headers mList.setDivider(null); mList.setDividerHeight(0); - mList.setLifeCycleListener(new WrapperViewListLifeCycleListener()); - mList.setOnScrollListener(new WrapperListScrollListener()); - addView(mList); + // create a temporary ListView that is used to parse the attributes. + // this will ensure default parsing behaviour of ListView styles while + // still ensuring control over what attributes can be styled. + // don't pass defStyle to this list as it belongs to a frame layout. + ListView attrsList = new ListView(context, attrs); + + mDivider = attrsList.getDivider(); + mDividerHeight = attrsList.getDividerHeight(); + setPadding(attrsList.getPaddingLeft(), attrsList.getPaddingTop(), + attrsList.getPaddingRight(), attrsList.getPaddingBottom()); + mList.setFadingEdgeLength(attrsList.getVerticalFadingEdgeLength()); + mList.setHorizontalFadingEdgeEnabled(attrsList.isHorizontalFadingEdgeEnabled()); + mList.setVerticalFadingEdgeEnabled(attrsList.isVerticalFadingEdgeEnabled()); + mList.setCacheColorHint(attrsList.getCacheColorHint()); + mList.setFastScrollEnabled(attrsList.isFastScrollEnabled()); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { + mList.setChoiceMode(attrsList.getChoiceMode()); + mList.setFastScrollAlwaysVisible(attrsList.isFastScrollAlwaysVisible()); + } + mList.setScrollBarStyle(attrsList.getScrollBarStyle()); + mList.setVerticalScrollBarEnabled(attrsList.isVerticalScrollBarEnabled()); + mList.setHorizontalScrollBarEnabled(attrsList.isHorizontalScrollBarEnabled()); + mList.setSelector(attrsList.getSelector()); + mList.setScrollingCacheEnabled(attrsList.isScrollingCacheEnabled()); if (attrs != null) { - TypedArray a = context.getTheme().obtainStyledAttributes(attrs,R.styleable.StickyListHeadersListView, 0, 0); + TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.StickyListHeadersListView, 0, 0); try { - // Android attributes - if (a.hasValue(R.styleable.StickyListHeadersListView_android_padding)) { - int padding = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_padding, 0); - mPaddingLeft = padding; - mPaddingTop = padding; - mPaddingRight = padding; - mPaddingBottom = padding; - } else { - mPaddingLeft = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_paddingLeft, 0); - mPaddingTop = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_paddingTop, 0); - mPaddingRight = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_paddingRight, 0); - mPaddingBottom = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_paddingBottom, 0); - } - setPadding(mPaddingLeft, mPaddingTop, mPaddingRight, - mPaddingBottom); - - // Set clip to padding on the list and reset value to default on - // wrapper + // Set clip to padding on the list and reset value to default on wrapper mClippingToPadding = a.getBoolean(R.styleable.StickyListHeadersListView_android_clipToPadding, true); super.setClipToPadding(true); mList.setClipToPadding(mClippingToPadding); - - // ListView attributes - mList.setFadingEdgeLength(a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_fadingEdgeLength, - mList.getVerticalFadingEdgeLength())); - final int fadingEdge = a.getInt(R.styleable.StickyListHeadersListView_android_requiresFadingEdge, 0); - if (fadingEdge == 0x00001000) { - mList.setVerticalFadingEdgeEnabled(false); - mList.setHorizontalFadingEdgeEnabled(true); - } else if (fadingEdge == 0x00002000) { - mList.setVerticalFadingEdgeEnabled(true); - mList.setHorizontalFadingEdgeEnabled(false); - } else { - mList.setVerticalFadingEdgeEnabled(false); - mList.setHorizontalFadingEdgeEnabled(false); - } - mList.setCacheColorHint(a - .getColor(R.styleable.StickyListHeadersListView_android_cacheColorHint, mList.getCacheColorHint())); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { - mList.setChoiceMode(a.getInt(R.styleable.StickyListHeadersListView_android_choiceMode, - mList.getChoiceMode())); - } mList.setDrawSelectorOnTop(a.getBoolean(R.styleable.StickyListHeadersListView_android_drawSelectorOnTop, false)); - mList.setFastScrollEnabled(a.getBoolean(R.styleable.StickyListHeadersListView_android_fastScrollEnabled, - mList.isFastScrollEnabled())); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { - mList.setFastScrollAlwaysVisible(a.getBoolean( - R.styleable.StickyListHeadersListView_android_fastScrollAlwaysVisible, - mList.isFastScrollAlwaysVisible())); - } - mList.setScrollBarStyle(a.getInt(R.styleable.StickyListHeadersListView_android_scrollbarStyle, 0)); - if (a.hasValue(R.styleable.StickyListHeadersListView_android_listSelector)) { - mList.setSelector(a.getDrawable(R.styleable.StickyListHeadersListView_android_listSelector)); - } - mList.setScrollingCacheEnabled(a.getBoolean(R.styleable.StickyListHeadersListView_android_scrollingCache, - mList.isScrollingCacheEnabled())); - if (a.hasValue(R.styleable.StickyListHeadersListView_android_divider)) { - mDivider = a.getDrawable(R.styleable.StickyListHeadersListView_android_divider); - } - mDividerHeight = a.getDimensionPixelSize(R.styleable.StickyListHeadersListView_android_dividerHeight, - mDividerHeight); - - // StickyListHeaders attributes mAreHeadersSticky = a.getBoolean(R.styleable.StickyListHeadersListView_hasStickyHeaders, true); mIsDrawingListUnderStickyHeader = a.getBoolean( - R.styleable.StickyListHeadersListView_isDrawingListUnderStickyHeader, - true); + R.styleable.StickyListHeadersListView_isDrawingListUnderStickyHeader, true); } finally { a.recycle(); } } - mList.setVerticalScrollBarEnabled(isVerticalScrollBarEnabled()); - mList.setHorizontalScrollBarEnabled(isHorizontalScrollBarEnabled()); + // attach some listeners to the wrapped list + mList.setLifeCycleListener(new WrapperViewListLifeCycleListener()); + mList.setOnScrollListener(new WrapperListScrollListener()); + + addView(mList); } @Override From 0aa0e447d3c3a1bf4c5624e8f91c38c5f4348359 Mon Sep 17 00:00:00 2001 From: Christian Becker Date: Tue, 19 Nov 2013 08:21:36 +0100 Subject: [PATCH 80/90] Removed redundant Build.Version.SDK_INT check --- .../stickylistheaders/StickyListHeadersListView.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java index 5ffe670f..63d85baf 100644 --- a/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java +++ b/library/src/se/emilsjolander/stickylistheaders/StickyListHeadersListView.java @@ -777,10 +777,12 @@ public long getItemIdAtPosition(int position) { return mList.getItemIdAtPosition(position); } + @Override public void setOnCreateContextMenuListener(OnCreateContextMenuListener l) { mList.setOnCreateContextMenuListener(l); } + @Override public boolean showContextMenu() { return mList.showContextMenu(); } @@ -842,9 +844,7 @@ public void setFastScrollEnabled(boolean fastScrollEnabled) { @TargetApi(Build.VERSION_CODES.HONEYCOMB) public void setFastScrollAlwaysVisible(boolean alwaysVisible) { requireSdkVersion(Build.VERSION_CODES.HONEYCOMB); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { - mList.setFastScrollAlwaysVisible(alwaysVisible); - } + mList.setFastScrollAlwaysVisible(alwaysVisible); } /** From f9d58e407853a14173d65475a3917f30777bc10f Mon Sep 17 00:00:00 2001 From: Christian Becker Date: Tue, 19 Nov 2013 08:39:10 +0100 Subject: [PATCH 81/90] Updated SDK to 19, BuildTools to 19.0.0 and SupportLib to 19.0.0 --- gradle/wrapper/gradle-wrapper.properties | 4 ++-- library/build.gradle | 4 ++-- library/project.properties | 2 +- sample/build.gradle | 6 +++--- sample/project.properties | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ab542466..0a7effc6 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sat Nov 02 01:05:54 CET 2013 +#Tue Nov 19 08:36:06 CET 2013 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-bin.zip +distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-all.zip diff --git a/library/build.gradle b/library/build.gradle index 9b26536f..7622d763 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -1,8 +1,8 @@ apply plugin: 'android-library' android { - compileSdkVersion 18 - buildToolsVersion '18.1.1' + compileSdkVersion 19 + buildToolsVersion '19.0.0' sourceSets { main { diff --git a/library/project.properties b/library/project.properties index 1b8c5a34..91d2b024 100644 --- a/library/project.properties +++ b/library/project.properties @@ -11,5 +11,5 @@ #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt # Project target. -target=android-18 +target=android-19 android.library=true diff --git a/sample/build.gradle b/sample/build.gradle index fc087c17..f40e0b37 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -5,12 +5,12 @@ repositories { } dependencies { compile project(':library') - compile 'com.android.support:support-v4:18.0.0' + compile 'com.android.support:support-v4:19.0.0' } android { - compileSdkVersion 18 - buildToolsVersion '18.0.1' + compileSdkVersion 19 + buildToolsVersion '19.0.0' sourceSets { main { diff --git a/sample/project.properties b/sample/project.properties index 7143bfdb..a6cf15da 100644 --- a/sample/project.properties +++ b/sample/project.properties @@ -11,5 +11,5 @@ #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt # Project target. -target=android-18 +target=android-19 android.library.reference.1=../library From ca90ccd8119784d704e5009bcd4d5689f7386b31 Mon Sep 17 00:00:00 2001 From: Eric Frohnhoefer Date: Mon, 9 Dec 2013 22:16:29 -0500 Subject: [PATCH 82/90] Fixes #243 Added the ability to toggle various features in sample application Updated README to match source --- README.md | 2 +- sample/AndroidManifest.xml | 4 +- sample/build.gradle | 1 + sample/res/drawable-hdpi/ic_drawer.png | Bin 0 -> 2826 bytes sample/res/drawable-mdpi/ic_drawer.png | Bin 0 -> 2816 bytes sample/res/drawable-xhdpi/ic_drawer.png | Bin 0 -> 1038 bytes sample/res/layout/header.xml | 25 +--- sample/res/layout/main.xml | 127 ++++++++++++++--- sample/res/menu/main.xml | 16 --- sample/res/values/colors.xml | 1 + sample/res/values/strings.xml | 10 ++ sample/res/values/style.xml | 9 ++ .../stickylistheaders/TestActivity.java | 128 ++++++++++++++---- .../stickylistheaders/TestBaseAdapter.java | 10 +- .../views/UnderlineTextView.java | 50 +++++++ 15 files changed, 289 insertions(+), 94 deletions(-) create mode 100644 sample/res/drawable-hdpi/ic_drawer.png create mode 100644 sample/res/drawable-mdpi/ic_drawer.png create mode 100644 sample/res/drawable-xhdpi/ic_drawer.png delete mode 100644 sample/res/menu/main.xml create mode 100644 sample/res/values/style.xml create mode 100644 sample/src/se/emilsjolander/stickylistheaders/views/UnderlineTextView.java diff --git a/README.md b/README.md index 69c2125d..2cfff299 100644 --- a/README.md +++ b/README.md @@ -190,7 +190,7 @@ public View getListChildAt(int index); public int getListChildCount(); ``` -This is a setter and getter for an internal attribute that controls if the list should be drawn under the stuck header. The default value is false. If you want to see the list scroll under your header(the header should have a semi-transparent background) you will want to set this attribute to `true`. +This is a setter and getter for an internal attribute that controls if the list should be drawn under the stuck header. The default value is true. If you do not want to see the list scroll under your header you will want to set this attribute to `false`. ```java public void setDrawingListUnderStickyHeader(boolean drawingListUnderStickyHeader); public boolean isDrawingListUnderStickyHeader(); diff --git a/sample/AndroidManifest.xml b/sample/AndroidManifest.xml index fbf7275d..4bf61a44 100644 --- a/sample/AndroidManifest.xml +++ b/sample/AndroidManifest.xml @@ -11,10 +11,10 @@ android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" + android:theme="@style/Theme.AppCompat.Light.DarkActionBar" android:supportsRtl="true"> diff --git a/sample/build.gradle b/sample/build.gradle index f40e0b37..b620008e 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -5,6 +5,7 @@ repositories { } dependencies { compile project(':library') + compile 'com.android.support:appcompat-v7:19.0.+' compile 'com.android.support:support-v4:19.0.0' } diff --git a/sample/res/drawable-hdpi/ic_drawer.png b/sample/res/drawable-hdpi/ic_drawer.png new file mode 100644 index 0000000000000000000000000000000000000000..6614ea4f4da2ffd9534f0ef5f20bcb00194005b2 GIT binary patch literal 2826 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 - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/sample/res/layout/main.xml b/sample/res/layout/main.xml index 39d285df..9d2e3162 100644 --- a/sample/res/layout/main.xml +++ b/sample/res/layout/main.xml @@ -1,24 +1,107 @@ - - - - - + android:layout_height="match_parent"> + + + + + + + + + + + + + + + +

I-vxNg9#R{H|2IQYz-L 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�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