Раздувать и связывать вид одновременно в Android - PullRequest
1 голос
/ 05 марта 2019

Я пытаюсь раздуть представление для каждого объекта в списке и привязать его к данным в одно и то же время, и вот как я это реализую:

data.forEach { rule ->
        layoutInflater.inflate(
            R.layout.rule_view_holder,
            this.rulesContainer
        ).apply {
            setOnClickListener { content.flipVisibility() }
            title.text = rule.title
            contentText.text = rule.content.fromHtml()
            rule.images.map {
                createImageView(this.context, it)
            }.forEach {
                contentImages.addView(it)
            }
        }
    }

Представления раздули и вставили в LinearLayout правильно, но кажется, что данные привязаны только к последнему элементу в списке, вот что я имею в виду: image Есть список с 6 элементами в нем, поэтому раздувание просмотра определенно верно (из-за горизонтальных линий, чтораздувается для каждого представления обязательно).

Также есть макет rule_view_holder снимок экрана

Не могли бы вы помочь мне исправить это поведение?

1 Ответ

0 голосов
/ 05 марта 2019

Вы можете накачать элемент xml без родителя (pass null), а затем вызвать addView:

data.forEach { rule ->
    val view = layoutInflater.inflate(R.layout.rule_view_holder, null).apply {
        setOnClickListener { content.flipVisibility() }
        title.text = rule.title
        contentText.text = rule.content.fromHtml()
        rule.images.map {
            createImageView(this.context, it)
        }.forEach {
            contentImages.addView(it)
        }
    }
    this.rulesContainer.addView(view)
}
...