11package com .timehop .stickyheadersrecyclerview .sample ;
22
33import android .content .pm .ActivityInfo ;
4+ import android .content .res .Resources ;
45import android .graphics .Color ;
6+ import android .graphics .Rect ;
57import android .os .Bundle ;
68import android .os .Handler ;
79import android .os .Looper ;
810import android .support .v7 .app .AppCompatActivity ;
911import android .support .v7 .widget .LinearLayoutManager ;
1012import android .support .v7 .widget .RecyclerView ;
13+ import android .util .Log ;
1114import android .view .LayoutInflater ;
1215import android .view .View ;
1316import android .view .ViewGroup ;
1821
1922import com .timehop .stickyheadersrecyclerview .StickyRecyclerHeadersAdapter ;
2023import com .timehop .stickyheadersrecyclerview .StickyRecyclerHeadersDecoration ;
24+ import com .timehop .stickyheadersrecyclerview .StickyRecyclerHeadersPositionChangeListener ;
2125import com .timehop .stickyheadersrecyclerview .StickyRecyclerHeadersTouchListener ;
2226
2327import java .security .SecureRandom ;
@@ -65,6 +69,18 @@ public void run() {
6569 final StickyRecyclerHeadersDecoration headersDecor = new StickyRecyclerHeadersDecoration (adapter );
6670 recyclerView .addItemDecoration (headersDecor );
6771
72+ headersDecor .setHeaderPositionListener (new StickyRecyclerHeadersPositionChangeListener () {
73+ @ Override
74+ public void onHeaderPositionChanged (StickyRecyclerHeadersDecoration decor , long headerId , View header , int position , Rect headerRect ) {
75+ boolean headerIsOnTop = header != null && headerRect != null && headerRect .top <= (16 * Resources .getSystem ().getDisplayMetrics ().density );
76+ boolean headerIsObscuringSomeView = headerIsOnTop && decor .headerObscuringSomeItem (recyclerView , header );
77+
78+ Log .i (MainActivity .class .getSimpleName (), String .format ("ON_TOP: %s | OBSCURING_SOME_VIEW: %s" , headerIsOnTop , headerIsObscuringSomeView ));
79+
80+ header .findViewById (R .id .header_shadow ).setVisibility (headerIsObscuringSomeView ? View .VISIBLE : View .INVISIBLE );
81+ }
82+ });
83+
6884 // Add decoration for dividers between list items
6985 recyclerView .addItemDecoration (new DividerDecoration (this ));
7086
@@ -151,8 +167,9 @@ public RecyclerView.ViewHolder onCreateHeaderViewHolder(ViewGroup parent, int po
151167
152168 @ Override
153169 public void onBindHeaderViewHolder (RecyclerView .ViewHolder holder , int position ) {
154- TextView textView = (TextView ) holder .itemView ;
170+ TextView textView = (TextView ) holder .itemView . findViewById ( R . id . header_text ) ;
155171 textView .setText (String .valueOf (getItem (position ).charAt (0 )));
172+
156173 holder .itemView .setBackgroundColor (getRandomColor ());
157174 }
158175
@@ -162,6 +179,5 @@ private int getRandomColor() {
162179 rgen .nextInt (359 ), 1 , 1
163180 });
164181 }
165-
166182 }
167183}
0 commit comments