0
0
Android Kotlinmobile~20 mins

Sticky headers in Android Kotlin - Practice Problems & Coding Challenges

Choose your learning style9 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.