Невозможно отобразить детей в группе просмотра - PullRequest
0 голосов
/ 30 октября 2018

Почему карта не работает в этом списке детей?

class DivisorItem(context: Context): RecyclerView.ItemDecoration() {
private val mDivisor: Drawable? = ContextCompat.getDrawable(context, R.drawable.item_divisor)

override fun onDrawOver(c: Canvas, parent: RecyclerView, state: RecyclerView.State) {
    val left = parent.paddingLeft
    val right = parent.width - parent.paddingRight

    parent.children.map {
        val params = it.layoutParams as RecyclerView.LayoutParams
        val top = it.bottom + params.bottomMargin
        val bottom = top + mDivisor!!.intrinsicHeight
        mDivisor.setBounds(left, top, right, bottom)
        mDivisor.setColorFilter(Color.GRAY, PorterDuff.Mode.SRC_IN)
        mDivisor.draw(c)
    }

}
}

В этой группе 4 вида, но она никогда не входит в блок карты

1 Ответ

0 голосов
/ 30 октября 2018

Я нашел решение ... parent.children - это последовательность

Я открыл источник и нашел его:

val ViewGroup.children: Sequence<View>
get() = object : Sequence<View> {
    override fun iterator() = this@children.iterator()
}

Я думаю, что это не изменится ... выше этого кода в том же источнике, который я нашел

operator fun ViewGroup.iterator() = object : MutableIterator<View> {
private var index = 0
override fun hasNext() = index < childCount
override fun next() = getChildAt(index++) ?: throw IndexOutOfBoundsException()
override fun remove() = removeViewAt(--index)

}

Поэтому я изменил свой код на:

parent.iterator().forEach {
        val params = it.layoutParams as RecyclerView.LayoutParams
        val top = it.bottom + params.bottomMargin
        val bottom = top + mDivisor!!.intrinsicHeight
        mDivisor.setBounds(left, top, right, bottom)
        mDivisor.setColorFilter(Color.GRAY, PorterDuff.Mode.SRC_IN)
        mDivisor.draw(c)
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...