From e928606c8d63f7451d7b1d93f2a97401c15a07bf Mon Sep 17 00:00:00 2001 From: Tom Date: Tue, 22 Oct 2013 18:50:55 +0800 Subject: [PATCH 1/3] 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 2/3] 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 3/3] 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); }