У меня есть файл ConstraintLayout
с именем R.layout.new_plan
, который содержит представления, необходимые для отображения объекта PlanItem
.Я хотел бы отобразить список R.layout.new_plan
в представлении RelativeLayout
root.
Мой RelativeLayout
parent / root выглядит так:
<RelativeLayout
android:id="@+id/rl_plan_items"
android:layout_width="match_parent"
android:layout_height="wrap_content"
<!-- other properties here -->
</RelativeLayout>
Другими словами, у меня есть List<PlanItem>
, и я хотел бы отобразить этот список, используя представление R.layout.new_plan
для отображения каждого PlanItem
в rl_plan_items
.Мой текущий способ сделать это - выполнить цикл для каждого PlanItem
в списке, установить TextView
s в R.layout.new_plan
в соответствии с атрибутами текущего PlanItem
и добавить его к rl_plan_items
, используя каким-либо образом RelativeLayout.LayoutParams
.
Код выглядит так:
private fun PlanItem.addToRootView(rootView: RelativeLayout, pos: Int) {
val planItemView: ConstraintLayout = inflater
.inflate(R.layout.new_plan, rootView, false) as ConstraintLayout
planItemView.id = pos
with(planItemView) {
tv_title.text = name
tv_desc.setTextAndGoneIfEmpty(description)
tv_date.text = getDateToDisplay(resources)
tv_subject.setTextAndGoneIfEmpty(subject?.name)
}
val params = planItemView.layoutParams as RelativeLayout.LayoutParams
val idOfBelow: Int = if (pos > 0) planItemView.id - 1 else rootView.id
params.addRule(RelativeLayout.BELOW, idOfBelow)
rootView.addView(planItemView, params)
}
в моем фрагменте:
for (i in planItems.indices) {
planItems[i].addToRootView(rl_plan_items, i)
}
Это показывает все PlanItems, но они отображаются друг на друге, не опускаясь на дно.
![enter image description here](https://i.stack.imgur.com/glV8i.png)
![enter image description here](https://i.stack.imgur.com/rY1Od.png)
Как отобразить планпросмотр элементов по порядку идет вниз, а не хрустит вместе?