简体   繁体   中英

How can I add the new android chips dynamically in Android?

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)
    }
}

Thank you all!

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"

Good Luck and Happy Coding!

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"

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM