From baceea1ada04f1e1ac15ae020ceaac2770189dce Mon Sep 17 00:00:00 2001 From: Tonic Artos Date: Tue, 3 Mar 2015 14:17:41 +0000 Subject: [PATCH 1/2] Don't try to fill down beyond the leading edge. --- library/src/main/java/com/tonicartos/superslim/GridSLM.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/library/src/main/java/com/tonicartos/superslim/GridSLM.java b/library/src/main/java/com/tonicartos/superslim/GridSLM.java index c9796d1..bd33fe0 100644 --- a/library/src/main/java/com/tonicartos/superslim/GridSLM.java +++ b/library/src/main/java/com/tonicartos/superslim/GridSLM.java @@ -72,6 +72,10 @@ public int computeHeaderOffset(int firstVisiblePosition, SectionData sd, LayoutS @Override public int fillToEnd(int leadingEdge, int markerLine, int anchorPosition, SectionData sd, LayoutState state) { + if (markerLine >= leadingEdge) { + return markerLine; + } + final int itemCount = state.recyclerState.getItemCount(); if (anchorPosition >= itemCount) { return markerLine; From a395bd4f3c1db984ce00ec9b999eefe902389ef3 Mon Sep 17 00:00:00 2001 From: Tonic Artos Date: Tue, 3 Mar 2015 14:19:47 +0000 Subject: [PATCH 2/2] Make sure to cache views while filling. --- library/src/main/java/com/tonicartos/superslim/GridSLM.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/library/src/main/java/com/tonicartos/superslim/GridSLM.java b/library/src/main/java/com/tonicartos/superslim/GridSLM.java index bd33fe0..0feb8b2 100644 --- a/library/src/main/java/com/tonicartos/superslim/GridSLM.java +++ b/library/src/main/java/com/tonicartos/superslim/GridSLM.java @@ -82,8 +82,8 @@ public int fillToEnd(int leadingEdge, int markerLine, int anchorPosition, Sectio } LayoutState.View anchor = state.getView(anchorPosition); + state.cacheView(anchorPosition, anchor.view); if (anchor.getLayoutParams().getTestedFirstPosition() != sd.firstPosition) { - state.cacheView(anchorPosition, anchor.view); return markerLine; } @@ -227,9 +227,9 @@ public int fillToStart(int leadingEdge, int markerLine, int anchorPosition, Sect } LayoutState.View rowAnchor = state.getView(i); + state.cacheView(i, rowAnchor.view); LayoutManager.LayoutParams params = rowAnchor.getLayoutParams(); if (params.isHeader || params.getTestedFirstPosition() != sd.firstPosition) { - state.cacheView(i, rowAnchor.view); break; }