@ -76,30 +76,30 @@ public class StickyHeaderDecoration extends RecyclerView.ItemDecoration {
protected ViewHolder getHeader ( RecyclerView parent , StickyHeaderAdapter adapter , int position ) {
final long key = adapter . getHeaderId ( position ) ;
if ( headerCache . containsKey ( key ) ) {
return headerCache . get ( key ) ;
} else {
final ViewHolder holder = adapter . onCreateHeaderViewHolder ( parent ) ;
final View header = holder . itemView ;
ViewHolder headerHolder = headerCache . get ( key ) ;
if ( headerHolder = = null ) {
headerHolder = adapter . onCreateHeaderViewHolder ( parent ) ;
//noinspection unchecked
adapter . onBindHeaderViewHolder ( h older, position ) ;
adapter . onBindHeaderViewHolder ( h eaderH older, position ) ;
int widthSpec = View . MeasureSpec . makeMeasureSpec ( parent . getWidth ( ) , View . MeasureSpec . EXACTLY ) ;
int heightSpec = View . MeasureSpec . makeMeasureSpec ( parent . getHeight ( ) , View . MeasureSpec . UNSPECIFIED ) ;
headerCache . put ( key , headerHolder ) ;
}
int childWidth = ViewGroup . getChildMeasureSpec ( widthSpec ,
parent . getPaddingLeft ( ) + parent . getPaddingRight ( ) , header . getLayoutParams ( ) . width ) ;
int childHeight = ViewGroup . getChildMeasureSpec ( heightSpec ,
parent . getPaddingTop ( ) + parent . getPaddingBottom ( ) , header . getLayoutParams ( ) . height ) ;
final View header = headerHolder . itemView ;
header . measure ( childWidth , childHeight ) ;
header . layout ( 0 , 0 , header . getMeasuredWidth ( ) , header . getMeasuredHeight ( ) ) ;
int widthSpec = View . MeasureSpec . makeMeasureSpec ( parent . getWidth ( ) , View . MeasureSpec . EXACTLY ) ;
int heightSpec = View . MeasureSpec . makeMeasureSpec ( parent . getHeight ( ) , View . MeasureSpec . UNSPECIFIED ) ;
headerCache . put ( key , holder ) ;
int childWidth = ViewGroup . getChildMeasureSpec ( widthSpec ,
parent . getPaddingLeft ( ) + parent . getPaddingRight ( ) , header . getLayoutParams ( ) . width ) ;
int childHeight = ViewGroup . getChildMeasureSpec ( heightSpec ,
parent . getPaddingTop ( ) + parent . getPaddingBottom ( ) , header . getLayoutParams ( ) . height ) ;
return holder ;
}
header . measure ( childWidth , childHeight ) ;
header . layout ( 0 , 0 , header . getMeasuredWidth ( ) , header . getMeasuredHeight ( ) ) ;
return headerHolder ;
}
/ * *
@ -180,10 +180,6 @@ public class StickyHeaderDecoration extends RecyclerView.ItemDecoration {
( ( LinearLayoutManager ) parent . getLayoutManager ( ) ) . getReverseLayout ( ) ;
}
public void invalidateLayouts ( ) {
headerCache . clear ( ) ;
}
/ * *
* The adapter to assist the { @link StickyHeaderDecoration } in creating and binding the header views .
*