From 4886872a0c2f81a482bd03afc464209f8dcdadf7 Mon Sep 17 00:00:00 2001 From: duncan Date: Thu, 10 Jan 2013 10:23:54 +0200 Subject: [PATCH 1/5] Can now invalidate the header, incase you want to resize a list view its holding --- .../pinnedheaderlistview/PinnedHeaderListView.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/library/src/za/co/immedia/pinnedheaderlistview/PinnedHeaderListView.java b/library/src/za/co/immedia/pinnedheaderlistview/PinnedHeaderListView.java index 19c4092..ab0421a 100644 --- a/library/src/za/co/immedia/pinnedheaderlistview/PinnedHeaderListView.java +++ b/library/src/za/co/immedia/pinnedheaderlistview/PinnedHeaderListView.java @@ -66,7 +66,7 @@ public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCoun int section = mAdapter.getSectionForPosition(firstVisibleItem); int viewType = mAdapter.getSectionHeaderViewType(section); mCurrentHeader = getSectionHeaderView(section, mCurrentHeaderViewType != viewType ? null : mCurrentHeader); - ensurePinnedHeaderLayout(mCurrentHeader); + ensurePinnedHeaderLayout(mCurrentHeader, false); mCurrentHeaderViewType = viewType; mHeaderOffset = 0.0f; @@ -98,14 +98,14 @@ private View getSectionHeaderView(int section, View oldView) { View view = mAdapter.getSectionHeaderView(section, oldView, this); if (shouldLayout) { // a new section, thus a new header. We should lay it out again - ensurePinnedHeaderLayout(view); + ensurePinnedHeaderLayout(view, false); mCurrentSection = section; } return view; } - private void ensurePinnedHeaderLayout(View header) { - if (header.isLayoutRequested()) { + private void ensurePinnedHeaderLayout(View header, boolean forceLayout) { + if (header.isLayoutRequested() || !forceLayout) { int widthSpec = MeasureSpec.makeMeasureSpec(getWidth(), MeasureSpec.EXACTLY); int heightSpec; ViewGroup.LayoutParams layoutParams = header.getLayoutParams(); @@ -155,4 +155,8 @@ public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) { public abstract void onSectionClick(SectionedBaseAdapter adapter, View view, int section, long id); } + + public void invalidateHeader() { + ensurePinnedHeaderLayout(mCurrentHeader, true); + } } From e545ff072cbcf1cc085ea5a6c42cb8c1e6d13e89 Mon Sep 17 00:00:00 2001 From: duncan Date: Wed, 6 Feb 2013 14:50:36 +0200 Subject: [PATCH 2/5] Updated gitignore --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index fe88257..10da075 100755 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,7 @@ *.ipr *.classpath *.project + + +build.xml +proguard-project.txt \ No newline at end of file From 7d4889351b7ee566f6d699cd14e483a9ad5c28ea Mon Sep 17 00:00:00 2001 From: duncan Date: Wed, 13 Feb 2013 11:23:29 +0200 Subject: [PATCH 3/5] Get section item to keep to adapter convention --- .../co/immedia/pinnedheaderlistview/SectionedBaseAdapter.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/library/src/za/co/immedia/pinnedheaderlistview/SectionedBaseAdapter.java b/library/src/za/co/immedia/pinnedheaderlistview/SectionedBaseAdapter.java index 20957d3..ad760b6 100644 --- a/library/src/za/co/immedia/pinnedheaderlistview/SectionedBaseAdapter.java +++ b/library/src/za/co/immedia/pinnedheaderlistview/SectionedBaseAdapter.java @@ -179,6 +179,8 @@ public int getSectionHeaderViewTypeCount() { public abstract long getItemId(int section, int position); + public abstract Object getSectionItem(int section); + public abstract int getSectionCount(); public abstract int getCountForSection(int section); From 1948bd5e6cf169a2c55454fdfc7012048b07aaa6 Mon Sep 17 00:00:00 2001 From: Duncan Scholtz Date: Tue, 19 Feb 2013 10:51:39 +0200 Subject: [PATCH 4/5] Checking to see if header is null --- library/.settings/org.eclipse.jdt.core.prefs | 4 ++++ .../PinnedHeaderListView.java | 21 +++++++++++-------- 2 files changed, 16 insertions(+), 9 deletions(-) create mode 100644 library/.settings/org.eclipse.jdt.core.prefs diff --git a/library/.settings/org.eclipse.jdt.core.prefs b/library/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..b080d2d --- /dev/null +++ b/library/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.source=1.6 diff --git a/library/src/za/co/immedia/pinnedheaderlistview/PinnedHeaderListView.java b/library/src/za/co/immedia/pinnedheaderlistview/PinnedHeaderListView.java index 9c84bbd..cf5d412 100644 --- a/library/src/za/co/immedia/pinnedheaderlistview/PinnedHeaderListView.java +++ b/library/src/za/co/immedia/pinnedheaderlistview/PinnedHeaderListView.java @@ -83,7 +83,7 @@ public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCoun int section = mAdapter.getSectionForPosition(firstVisibleItem); int viewType = mAdapter.getSectionHeaderViewType(section); mCurrentHeader = getSectionHeaderView(section, mCurrentHeaderViewType != viewType ? null : mCurrentHeader); - ensurePinnedHeaderLayout(mCurrentHeader, false); + ensurePinnedHeaderLayout(mCurrentHeader, false); mCurrentHeaderViewType = viewType; mHeaderOffset = 0.0f; @@ -118,14 +118,14 @@ private View getSectionHeaderView(int section, View oldView) { View view = mAdapter.getSectionHeaderView(section, oldView, this); if (shouldLayout) { // a new section, thus a new header. We should lay it out again - ensurePinnedHeaderLayout(view, false); + ensurePinnedHeaderLayout(view, false); mCurrentSection = section; } return view; } - private void ensurePinnedHeaderLayout(View header, boolean forceLayout) { - if (header.isLayoutRequested() || !forceLayout) { + private void ensurePinnedHeaderLayout(View header, boolean forceLayout) { + if (header.isLayoutRequested() || !forceLayout) { int widthSpec = MeasureSpec.makeMeasureSpec(getWidth(), MeasureSpec.EXACTLY); int heightSpec; ViewGroup.LayoutParams layoutParams = header.getLayoutParams(); @@ -143,10 +143,11 @@ private void ensurePinnedHeaderLayout(View header, boolean forceLayout) { @Override protected void dispatchDraw(Canvas canvas) { super.dispatchDraw(canvas); - if (mAdapter == null || !mShouldPin || mCurrentHeader == null) return; + if (mAdapter == null || !mShouldPin || mCurrentHeader == null) + return; int saveCount = canvas.save(); canvas.translate(0, mHeaderOffset); - canvas.clipRect(0, 0, getWidth(), mCurrentHeader.getMeasuredHeight()); // needed for < HONEYCOMB + canvas.clipRect(0, 0, getWidth(), mCurrentHeader.getMeasuredHeight()); // needed for < HONEYCOMB mCurrentHeader.draw(canvas); canvas.restoreToCount(saveCount); } @@ -180,7 +181,9 @@ public void onItemClick(AdapterView adapterView, View view, int rawPosition, } - public void invalidateHeader() { - ensurePinnedHeaderLayout(mCurrentHeader, true); - } + public void invalidateHeader() { + if (mCurrentHeader != null) { + ensurePinnedHeaderLayout(mCurrentHeader, true); + } + } } From 45f276b2ba14885fd342be5fe05ffed66e0335b8 Mon Sep 17 00:00:00 2001 From: Duncan Scholtz Date: Wed, 20 Mar 2013 13:29:55 +0200 Subject: [PATCH 5/5] Fixed layout var to be forced --- .../co/immedia/pinnedheaderlistview/PinnedHeaderListView.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/src/za/co/immedia/pinnedheaderlistview/PinnedHeaderListView.java b/library/src/za/co/immedia/pinnedheaderlistview/PinnedHeaderListView.java index cf5d412..f64c995 100644 --- a/library/src/za/co/immedia/pinnedheaderlistview/PinnedHeaderListView.java +++ b/library/src/za/co/immedia/pinnedheaderlistview/PinnedHeaderListView.java @@ -125,7 +125,7 @@ private View getSectionHeaderView(int section, View oldView) { } private void ensurePinnedHeaderLayout(View header, boolean forceLayout) { - if (header.isLayoutRequested() || !forceLayout) { + if (header.isLayoutRequested() || forceLayout) { int widthSpec = MeasureSpec.makeMeasureSpec(getWidth(), MeasureSpec.EXACTLY); int heightSpec; ViewGroup.LayoutParams layoutParams = header.getLayoutParams();