Skip to content

Commit e7a9df7

Browse files
author
Rafael Dominiquini
committed
Refactor
1 parent ea3bb28 commit e7a9df7

File tree

5 files changed

+19
-24
lines changed

5 files changed

+19
-24
lines changed

library/src/androidTest/java/com/timehop/stickyheadersrecyclerview/ApplicationTest.java

Lines changed: 0 additions & 13 deletions
This file was deleted.

library/src/main/java/com/timehop/stickyheadersrecyclerview/HeaderPositionCalculator.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,9 @@ public HeaderPositionCalculator(StickyRecyclerHeadersAdapter adapter, HeaderProv
4848
*/
4949
public boolean hasStickyHeader(View itemView, int orientation, int position) {
5050
int offset, margin;
51+
5152
mDimensionCalculator.initMargins(mTempRect1, itemView);
53+
5254
if (orientation == LinearLayout.VERTICAL) {
5355
offset = itemView.getTop();
5456
margin = mTempRect1.top;
@@ -77,6 +79,7 @@ public boolean hasNewHeader(int position, boolean isReverseLayout) {
7779
int columnOfItem = position % numColumns;
7880
if (columnOfItem > 0) {
7981
int firstItemOnRowPosition = position - columnOfItem;
82+
8083
return hasNewHeader(firstItemOnRowPosition, isReverseLayout);
8184
}
8285

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

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -68,12 +68,14 @@ private StickyRecyclerHeadersDecoration(StickyRecyclerHeadersAdapter adapter, He
6868
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
6969
super.getItemOffsets(outRect, view, parent, state);
7070
int itemPosition = parent.getChildAdapterPosition(view);
71-
if (itemPosition == RecyclerView.NO_POSITION) {
72-
return;
73-
}
74-
if (mHeaderPositionCalculator.hasNewHeader(itemPosition, mOrientationProvider.isReverseLayout(parent))) {
75-
View header = getHeaderView(parent, itemPosition);
76-
setItemOffsetsForHeader(outRect, header, mOrientationProvider.getOrientation(parent));
71+
72+
if (itemPosition != RecyclerView.NO_POSITION) {
73+
boolean hasNewHeader = mHeaderPositionCalculator.hasNewHeader(itemPosition, mOrientationProvider.isReverseLayout(parent));
74+
75+
if (hasNewHeader) {
76+
View header = getHeaderView(parent, itemPosition);
77+
setItemOffsetsForHeader(outRect, header, mOrientationProvider.getOrientation(parent));
78+
}
7779
}
7880
}
7981

@@ -112,14 +114,14 @@ public void onDrawOver(Canvas canvas, RecyclerView parent, RecyclerView.State st
112114
}
113115

114116
boolean hasStickyHeader = mHeaderPositionCalculator.hasStickyHeader(itemView, mOrientationProvider.getOrientation(parent), position);
115-
if (hasStickyHeader || mHeaderPositionCalculator.hasNewHeader(position, mOrientationProvider.isReverseLayout(parent))) {
117+
boolean hasNewHeader = mHeaderPositionCalculator.hasNewHeader(position, mOrientationProvider.isReverseLayout(parent));
118+
if (hasStickyHeader || hasNewHeader) {
116119
View header = mHeaderProvider.getHeader(parent, position);
117120

118121
//re-use existing Rect, if any.
119122
Rect headerOffset = mHeaderRects.get(position);
120123
if (headerOffset == null) {
121-
headerOffset = new Rect();
122-
mHeaderRects.put(position, headerOffset);
124+
mHeaderRects.put(position, headerOffset = new Rect());
123125
}
124126

125127
mHeaderPositionCalculator.initHeaderBounds(headerOffset, parent, header, itemView, hasStickyHeader, mEnableStickyHeader);

library/src/main/java/com/timehop/stickyheadersrecyclerview/rendering/HeaderRenderer.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import android.graphics.Canvas;
44
import android.graphics.Rect;
55
import android.support.v7.widget.RecyclerView;
6+
import android.util.Log;
67
import android.view.View;
78
import android.widget.LinearLayout;
89

@@ -54,6 +55,7 @@ public void drawHeader(RecyclerView recyclerView, Canvas canvas, View header, Re
5455
canvas.translate(offset.left, offset.top);
5556

5657
header.draw(canvas);
58+
5759
canvas.restore();
5860
}
5961

sample/src/main/java/com/timehop/stickyheadersrecyclerview/sample/DividerDecoration.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ public void drawVertical(Canvas c, RecyclerView parent) {
5656
final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();
5757
final int top = Math.max(recyclerViewTop, child.getBottom() + params.bottomMargin);
5858
final int bottom = Math.min(recyclerViewBottom, top + mDivider.getIntrinsicHeight());
59+
5960
mDivider.setBounds(left, top, right, bottom);
6061
mDivider.draw(c);
6162
}
@@ -69,10 +70,10 @@ public void drawHorizontal(Canvas c, RecyclerView parent) {
6970
final int childCount = parent.getChildCount();
7071
for (int i = 0; i < childCount; i++) {
7172
final View child = parent.getChildAt(i);
72-
final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child
73-
.getLayoutParams();
73+
final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child.getLayoutParams();
7474
final int left = Math.max(recyclerViewLeft, child.getRight() + params.rightMargin);
7575
final int right = Math.min(recyclerViewRight, left + mDivider.getIntrinsicHeight());
76+
7677
mDivider.setBounds(left, top, right, bottom);
7778
mDivider.draw(c);
7879
}

0 commit comments

Comments
 (0)