I have a class called Question which contains a String array of tags. I'm trying to show every question in a Recyclerview using Kotlin and every tag in a new chip. These chips will be included inside a ChipGroup.
My question is:
How can I add every tag element of the array into a new Chip? I'm trying to do this but It's obviously not working.
if (tags != null) { for (tag in tags) { val chip = Chip(itemView.context) } }
Chips are compact elements that represent an attribute, text, entity, or action. They allow users to enter information, select a choice, filter content, or trigger an action.
A ChipGroup is used to hold multiple Chip s. By default, the chips are reflowed across multiple lines. Set the app:singleLine attribute to constrain the chips to a single horizontal line. If you do so, you'll usually want to wrap this ChipGroup in a HorizontalScrollView .
You can add Chip
s the same way as any other ViewGroup
like so:
for (index in tags.indices) { val chip = Chip(chipGroup.context) chip.text= "Item ${tags[index]}" // necessary to get single selection working chip.isClickable = true chip.isCheckable = true chipGroup.addView(chip) }
for singleSelection don't forget to add to your chipGroup:
chipGroup.isSingleSelection = true
or in xml
app:singleSelection="true"
I always got the following error when trying to create a new Chip:
IllegalArgumentException: This component requires that you specify a valid android:textAppearance attribute
This could be fixed by instead inflating a custom R.layout.chip
with the following line: android:textAppearance="@style/TextAppearance.MaterialComponents.Chip"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With