android / codelab-android-paging

Jetpack Paging codelab
Apache License 2.0
491 stars 260 forks source link

Display header as one row in GridLayoutMnager #206

Open alirezaeiii opened 2 years ago

alirezaeiii commented 2 years ago

I am trying to show header as one row in Paging3 library using GridLayoutManager. For the footer as one row, I made following implementation :

            val header = LoadStateAdapter { showAdapter.retry() }
            binding.list.apply {
                val layoutManager = layoutManager as GridLayoutManager
                layoutManager.spanSizeLookup = object : SpanSizeLookup() {
                    override fun getSpanSize(position: Int): Int {
                        return if (showAdapter.getItemViewType(position) == ShowAdapter.LOADING_ITEM)
                            1 else layoutManager.spanCount
                    }
                }
                adapter = showAdapter.withLoadStateHeaderAndFooter(
                    header = header,
                    footer = LoadStateAdapter { showAdapter.retry() }
                )
            }

And in the Adapter, I have following implementation :

 override fun getItemViewType(position: Int): Int {
            return if (position == itemCount) SHOW_ITEM else LOADING_ITEM
}

How about header? How can I display it in one row?