Bird
Raised Fist0
Android Kotlinmobile~20 mins

Sticky headers in Android Kotlin - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Sticky Header Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ ui_behavior
intermediate
2:00remaining
Sticky Header Behavior in RecyclerView
What will happen when you scroll the RecyclerView with this sticky header implementation?
Android Kotlin
class StickyHeaderDecoration : RecyclerView.ItemDecoration() {
  override fun onDrawOver(c: Canvas, parent: RecyclerView, state: RecyclerView.State) {
    val topChild = parent.getChildAt(0) ?: return
    val topChildPosition = parent.getChildAdapterPosition(topChild)
    if (topChildPosition == RecyclerView.NO_POSITION) return
    val header = getHeaderViewForItem(topChildPosition, parent)
    fixLayoutSize(header, parent)
    c.save()
    c.translate(0f, 0f)
    header.draw(c)
    c.restore()
  }
  private fun getHeaderViewForItem(position: Int, parent: RecyclerView): View {
    // returns header view for the item at position
    TODO()
  }
  private fun fixLayoutSize(view: View, parent: RecyclerView) {
    val widthSpec = View.MeasureSpec.makeMeasureSpec(parent.width, View.MeasureSpec.EXACTLY)
    val heightSpec = View.MeasureSpec.makeMeasureSpec(parent.height, View.MeasureSpec.UNSPECIFIED)
    view.measure(widthSpec, heightSpec)
    view.layout(0, 0, view.measuredWidth, view.measuredHeight)
  }
}
AThe header stays fixed at the top while scrolling the list items underneath it.
BThe header scrolls away with the list items and does not stay visible.
CThe header flickers and disappears intermittently during scrolling.
DThe header overlaps list items and blocks touch events on them.
Attempts:
2 left
💡 Hint
Think about what onDrawOver does in RecyclerView.ItemDecoration.
🧠 Conceptual
intermediate
1:30remaining
Purpose of fixLayoutSize in Sticky Header
Why is the fixLayoutSize method necessary when drawing sticky headers in RecyclerView?
ATo measure and layout the header view so it draws correctly with proper size.
BTo handle touch events on the header view.
CTo animate the header view when it appears or disappears.
DTo recycle the header view for better memory usage.
Attempts:
2 left
💡 Hint
Think about what happens if a view is drawn without measuring and layout.
❓ lifecycle
advanced
2:00remaining
Handling Header Changes on Scroll
In a sticky header implementation, which RecyclerView callback is best to detect when the header should change as the user scrolls?
ARecyclerView.LayoutManager's onLayoutChildren method
BRecyclerView.ItemDecoration's onDrawOver method
CRecyclerView.OnScrollListener's onScrolled method
DRecyclerView.Adapter's onBindViewHolder method
Attempts:
2 left
💡 Hint
Consider where you get notified about scroll position changes.
🔧 Debug
advanced
2:00remaining
Sticky Header Overlapping Issue
You implemented sticky headers but notice the header overlaps the first list item partially. What is the most likely cause?
AThe RecyclerView's layout manager is not set to LinearLayoutManager.
BThe RecyclerView's adapter is not notifying data changes properly.
CThe header view is not being recycled correctly causing layout glitches.
DThe header view's height is not accounted for in item offsets, so list items start under the header.
Attempts:
2 left
💡 Hint
Think about spacing between items and header.
❓ navigation
expert
2:30remaining
Sticky Header with Section Navigation
You want to add fast section navigation (like an index on the side) that scrolls the RecyclerView to the correct sticky header section. Which approach is best?
AManually scroll the RecyclerView by pixel offset to the header's Y position.
BUse RecyclerView's scrollToPosition with the section's first item position.
CReplace the RecyclerView adapter with a filtered list for the section.
DUse a separate RecyclerView for the index and sync scroll positions.
Attempts:
2 left
💡 Hint
Think about how RecyclerView scrolls to items by position.

Practice

(1/5)
1. What is the main purpose of sticky headers in an Android RecyclerView?
easy
A. To keep section titles visible while scrolling
B. To add animations to list items
C. To load images asynchronously
D. To sort the list alphabetically

Solution

  1. Step 1: Understand sticky header behavior

    Sticky headers keep section titles visible at the top as you scroll through grouped list items.
  2. Step 2: Compare with other options

    Animations, image loading, and sorting are unrelated to sticky headers.
  3. Final Answer:

    To keep section titles visible while scrolling -> Option A
  4. Quick Check:

    Sticky headers = visible section titles [OK]
Hint: Sticky headers keep titles visible on scroll [OK]
Common Mistakes:
  • Confusing sticky headers with animations
  • Thinking sticky headers sort the list
  • Assuming sticky headers load images
2. Which Android component is commonly used to implement sticky headers in Kotlin?
easy
A. RecyclerView with ItemDecoration
B. ListView with Adapter
C. ScrollView with LinearLayout
D. ViewPager with FragmentStateAdapter

Solution

  1. Step 1: Identify components for sticky headers

    RecyclerView supports ItemDecoration which allows custom drawing for sticky headers.
  2. Step 2: Eliminate other options

    ListView and ScrollView do not support sticky headers natively; ViewPager is for paging, not lists.
  3. Final Answer:

    RecyclerView with ItemDecoration -> Option A
  4. Quick Check:

    Sticky headers use RecyclerView + ItemDecoration [OK]
Hint: Sticky headers need RecyclerView + ItemDecoration [OK]
Common Mistakes:
  • Choosing ListView instead of RecyclerView
  • Using ScrollView which lacks sticky header support
  • Confusing ViewPager with list components
3. Given this Kotlin code snippet for a RecyclerView ItemDecoration:
override fun onDrawOver(c: Canvas, parent: RecyclerView, state: RecyclerView.State) {
  val child = parent.getChildAt(0) ?: return
  val position = parent.getChildAdapterPosition(child)
  val header = getHeaderViewForItem(position)
  c.save()
  c.translate(0f, 0f)
  header.draw(c)
  c.restore()
}
What is the visible effect of this code when scrolling?
medium
A. The header blinks on every scroll event
B. The header stays fixed at the top while list scrolls underneath
C. The header appears at the bottom of the list
D. The header scrolls away with the list items

Solution

  1. Step 1: Analyze onDrawOver behavior

    onDrawOver draws the header on top of the RecyclerView content, fixed at the top (0f, 0f).
  2. Step 2: Understand scrolling effect

    Since header is drawn at fixed position, it stays visible while list scrolls underneath.
  3. Final Answer:

    The header stays fixed at the top while list scrolls underneath -> Option B
  4. Quick Check:

    onDrawOver + translate(0,0) = sticky header visible [OK]
Hint: onDrawOver draws sticky header at fixed top position [OK]
Common Mistakes:
  • Thinking header scrolls away with items
  • Assuming header appears at bottom
  • Believing header blinks on scroll
4. You implemented sticky headers using ItemDecoration but headers flicker or disappear during fast scroll. What is the likely cause?
medium
A. Using LinearLayoutManager instead of GridLayoutManager
B. Setting RecyclerView height to wrap_content
C. Forgetting to call super.onDrawOver() in override
D. Not caching header views causing repeated layout calls

Solution

  1. Step 1: Identify flicker cause in sticky headers

    Repeatedly creating and measuring header views without caching causes flicker during fast scroll.
  2. Step 2: Check other options

    Layout manager type or calling super.onDrawOver() usually don't cause flicker; wrap_content affects layout size but not flicker.
  3. Final Answer:

    Not caching header views causing repeated layout calls -> Option D
  4. Quick Check:

    Missing header caching = flicker [OK]
Hint: Cache header views to avoid flicker [OK]
Common Mistakes:
  • Ignoring header view caching
  • Blaming layout manager type
  • Forgetting super call but unrelated to flicker
5. You want to implement sticky headers that change smoothly when scrolling between sections in a RecyclerView. Which approach best achieves this effect?
hard
A. Use a separate fixed TextView outside RecyclerView for headers
B. Replace header view completely on every scroll event
C. Draw the current header at top and translate it up as next header approaches
D. Disable RecyclerView animations to prevent flicker

Solution

  1. Step 1: Understand smooth sticky header transition

    Drawing current header at top and moving it up as next header scrolls in creates smooth push effect.
  2. Step 2: Evaluate other options

    Replacing header fully causes flicker; separate TextView won't sync scrolling; disabling animations doesn't create smooth transition.
  3. Final Answer:

    Draw the current header at top and translate it up as next header approaches -> Option C
  4. Quick Check:

    Smooth sticky header = translate current header up [OK]
Hint: Translate header up for smooth sticky effect [OK]
Common Mistakes:
  • Replacing header view causing flicker
  • Using fixed TextView outside RecyclerView
  • Disabling animations instead of translating header
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard