Skip to content

Commit 9b80a3c

Browse files
author
Rafael Dominiquini
committed
Refactor.
1 parent 3904962 commit 9b80a3c

File tree

2 files changed

+19
-20
lines changed

2 files changed

+19
-20
lines changed

library/src/main/java/com/timehop/stickyheadersrecyclerview/calculation/DimensionCalculator.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@ public void initMargins(Rect margins, View view) {
2222
LayoutParams layoutParams = view.getLayoutParams();
2323

2424
if (layoutParams instanceof MarginLayoutParams) {
25-
MarginLayoutParams marginLayoutParams = (MarginLayoutParams) layoutParams;
26-
initMarginRect(margins, marginLayoutParams);
25+
initMarginRect(margins, (MarginLayoutParams) layoutParams);
2726
} else {
2827
margins.set(0, 0, 0, 0);
2928
}

library/src/main/java/com/timehop/stickyheadersrecyclerview/decorators/StickyRecyclerHeadersDecoration.java

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
public class StickyRecyclerHeadersDecoration extends RecyclerView.ItemDecoration {
2222

2323
private final StickyRecyclerHeadersAdapter mAdapter;
24-
private final SparseArray<Rect> mHeaderRects = new SparseArray<>();
2524
private final HeaderProvider mHeaderProvider;
2625
private final OrientationProvider mOrientationProvider;
2726
private final HeaderPositionCalculator mHeaderPositionCalculator;
@@ -36,6 +35,7 @@ public class StickyRecyclerHeadersDecoration extends RecyclerView.ItemDecoration
3635
* The following field is used as a buffer for internal calculations. Its sole purpose is to avoid
3736
* allocating new Rect every time we need one.
3837
*/
38+
private final SparseArray<Rect> mHeaderRects = new SparseArray<>();
3939
private final Rect mTempRect = new Rect();
4040

4141
public StickyRecyclerHeadersDecoration(StickyRecyclerHeadersAdapter adapter) {
@@ -109,26 +109,26 @@ public void onDrawOver(Canvas canvas, RecyclerView parent, RecyclerView.State st
109109

110110
int position = parent.getChildAdapterPosition(itemView);
111111

112-
if (position == RecyclerView.NO_POSITION || position % (mAdapter.getNumColumns() - mAdapter.getSpanSize(position) + 1) > 0) {
113-
continue;
114-
}
112+
int columnOfItem = position % (mAdapter.getNumColumns() - mAdapter.getSpanSize(position) + 1);
113+
if (position != RecyclerView.NO_POSITION && columnOfItem == 0) {
114+
boolean hasStickyHeader = mHeaderPositionCalculator.hasStickyHeader(itemView, mOrientationProvider.getOrientation(parent), position);
115+
boolean hasNewHeader = mHeaderPositionCalculator.hasNewHeader(position, mOrientationProvider.isReverseLayout(parent));
115116

116-
boolean hasStickyHeader = mHeaderPositionCalculator.hasStickyHeader(itemView, mOrientationProvider.getOrientation(parent), position);
117-
boolean hasNewHeader = mHeaderPositionCalculator.hasNewHeader(position, mOrientationProvider.isReverseLayout(parent));
118-
if (hasStickyHeader || hasNewHeader) {
119-
View header = mHeaderProvider.getHeader(parent, position);
117+
if (hasStickyHeader || hasNewHeader) {
118+
View header = mHeaderProvider.getHeader(parent, position);
120119

121-
//re-use existing Rect, if any.
122-
Rect headerOffset = mHeaderRects.get(position);
123-
if (headerOffset == null) {
124-
mHeaderRects.put(position, headerOffset = new Rect());
125-
}
120+
//re-use existing Rect, if any.
121+
Rect headerOffset = mHeaderRects.get(position);
122+
if (headerOffset == null) {
123+
mHeaderRects.put(position, headerOffset = new Rect());
124+
}
126125

127-
mHeaderPositionCalculator.initHeaderBounds(headerOffset, parent, header, itemView, hasStickyHeader, mEnableStickyHeader);
128-
mRenderer.drawHeader(parent, canvas, header, headerOffset);
126+
mHeaderPositionCalculator.initHeaderBounds(headerOffset, parent, header, itemView, hasStickyHeader, mEnableStickyHeader);
127+
mRenderer.drawHeader(parent, canvas, header, headerOffset);
129128

130-
if (mEnableStickyHeader && mHeaderListener != null) {
131-
mHeaderListener.onHeaderPositionChanged(this, mAdapter.getHeaderId(position), header, position, headerOffset);
129+
if (mEnableStickyHeader && mHeaderListener != null) {
130+
mHeaderListener.onHeaderPositionChanged(this, mAdapter.getHeaderId(position), header, position, headerOffset);
131+
}
132132
}
133133
}
134134
}
@@ -177,7 +177,7 @@ public View getHeaderView(RecyclerView parent, int position) {
177177
}
178178

179179
/**
180-
* Invalidates cached headers. This does not invalidate the recyclerview, you should do that manually after
180+
* Invalidates cached headers. This does not invalidate the recyclerview, you should do that manually after
181181
* calling this method.
182182
*/
183183
public void invalidateHeaders() {

0 commit comments

Comments
 (0)