Это работает для меня:
Мой пользовательский PerkFlow
класс:
class PerkFlow(context: Context, attrs: AttributeSet?) : Flow(context, attrs) {
fun setup(
parentView: ViewGroup,
perks: List<String>
) {
val referencedIds = IntArray(perks.size)
for (i in perks.indices) {
val textView = createTextView(context)
textView.text = perks[i]
textView.id = View.generateViewId()
parentView.addView(textView)
referencedIds[i] = textView.id
}
this.referencedIds = referencedIds
}
private fun createTextView(context: Context): TextView {
val textView = TextView(context)
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12F)
textView.setTextColor(context.resources.getColor(R.color.gmm_white))
return textView
}
}
мой xml
:
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
..... (a lot of other code)
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/vendor_details_perks_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/vendor_details_favourite">
<com.perkapp.mobile.views.PerkFlow
android:id="@+id/vendor_details_perks"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:flow_horizontalBias="0"
app:flow_horizontalGap="5dp"
app:flow_horizontalStyle="packed"
app:flow_verticalBias="0"
app:flow_verticalGap="2dp"
app:flow_wrapMode="chain"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
..... (a lot of other code)
</androidx.constraintlayout.widget.ConstraintLayout>
Настройка PerkFlow в Фрагмент:
binding.vendorDetailsPerks.setup(
binding.vendorDetailsPerksContainer,
listOf("apple, banana, blackberries, blueberries, cherries, grapes, lemon, orange, peaches, pear, pineapple, plums, raspberries, strawberries, watermelon ")
)
Надеюсь, это поможет!
И еще одна вещь: если вы вызовете это снова (в элементе RecyclerView, или поступят новые данные), не забудьте очистить родительский элемент вид или элементы будут продублированы. Я могу отправить этот код тоже, если нужно.