Skip to content

Instantly share code, notes, and snippets.

@mklkj
Created March 9, 2023 15:46
Show Gist options
  • Save mklkj/361dcf27469e06563322a1571454d571 to your computer and use it in GitHub Desktop.
Save mklkj/361dcf27469e06563322a1571454d571 to your computer and use it in GitHub Desktop.
import android.view.ViewGroup
import androidx.recyclerview.widget.ConcatAdapter
import androidx.recyclerview.widget.RecyclerView
import com.jay.widget.StickyHeaders
class StickyConcatAdapter(
private val concatAdapter: ConcatAdapter
) : RecyclerView.Adapter<RecyclerView.ViewHolder>(), StickyHeaders {
override fun isStickyHeader(position: Int): Boolean = position == 1
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder =
concatAdapter.onCreateViewHolder(parent, viewType)
override fun getItemCount(): Int = concatAdapter.itemCount
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) =
concatAdapter.onBindViewHolder(holder, position)
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int, payloads: MutableList<Any>) =
concatAdapter.onBindViewHolder(holder, position, payloads)
override fun findRelativeAdapterPositionIn(
adapter: RecyclerView.Adapter<out RecyclerView.ViewHolder>,
viewHolder: RecyclerView.ViewHolder,
localPosition: Int
): Int = concatAdapter.findRelativeAdapterPositionIn(adapter, viewHolder, localPosition)
override fun getItemViewType(position: Int): Int = concatAdapter.getItemViewType(position)
override fun setHasStableIds(hasStableIds: Boolean) = concatAdapter.setHasStableIds(hasStableIds)
override fun getItemId(position: Int): Long = concatAdapter.getItemId(position)
override fun onViewRecycled(holder: RecyclerView.ViewHolder) = concatAdapter.onViewRecycled(holder)
override fun onFailedToRecycleView(holder: RecyclerView.ViewHolder): Boolean =
concatAdapter.onFailedToRecycleView(holder)
override fun onViewAttachedToWindow(holder: RecyclerView.ViewHolder) = concatAdapter.onViewAttachedToWindow(holder)
override fun onViewDetachedFromWindow(holder: RecyclerView.ViewHolder) =
concatAdapter.onViewDetachedFromWindow(holder)
override fun registerAdapterDataObserver(observer: RecyclerView.AdapterDataObserver) =
concatAdapter.registerAdapterDataObserver(observer)
override fun unregisterAdapterDataObserver(observer: RecyclerView.AdapterDataObserver) =
concatAdapter.unregisterAdapterDataObserver(observer)
override fun onAttachedToRecyclerView(recyclerView: RecyclerView) =
concatAdapter.onAttachedToRecyclerView(recyclerView)
override fun onDetachedFromRecyclerView(recyclerView: RecyclerView) =
concatAdapter.onDetachedFromRecyclerView(recyclerView)
override fun setStateRestorationPolicy(strategy: StateRestorationPolicy) {
concatAdapter.stateRestorationPolicy = strategy
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment