Android Предмет украшения дает неправильное положение ребенка - PullRequest
0 голосов
/ 26 января 2020

Я использую оформление элемента для своего повторного просмотрщика для реализации липкого заголовка, где, как и в обратном вызове onDraw, я попытаюсь получить ближайший заголовок для текущего верхнего дочернего элемента, если нет, то ничего не будет делать
ItemDecoration класс

class StickyHeaderItemDecoration constructor() : RecyclerView.ItemDecoration() {

    private lateinit var mListener: StickyHeader
    private var mStickyHeaderHeight = 0

    override fun onDrawOver(canvas: Canvas, parent: RecyclerView, state: RecyclerView.State) {
        super.onDrawOver(canvas, parent, state)

        if (parent.adapter !is StickyHeader) {
            return
        }
        if (!::mListener.isInitialized) {
            mListener = parent.adapter as StickyHeader
        }

        val topChild = parent.getChildAt(0) ?: return
        val topChildPosition = parent.getChildAdapterPosition(topChild) // somtimes this gives me wrong a position
        if (topChildPosition == RecyclerView.NO_POSITION) {
            return
        }
        val headerPos = mListener.getHeaderPositionFor(topChildPosition)
        val currentHeader = getHeaderViewForItem(headerPos, parent)
        if (currentHeader != null) {
            fixLayoutSize(parent, currentHeader)
            val contactPoint = currentHeader.bottom
            val childInContact = getChildInContact(parent, contactPoint, headerPos)
            if (childInContact != null && mListener.isHeaderView(
                            parent.getChildAdapterPosition(
                                    childInContact
                            )
                    )
            ) {
                moveHeader(canvas, currentHeader, childInContact)
                return
            }
            drawHeader(canvas, currentHeader)
        }
    }
}

в чем заключается моя проблема с ошибкой topChildPosition в вышеприведенном коде, иногда, когда я добавляю элементы в окне переработчика, кто-нибудь может мне помочь с этим, пожалуйста?

...