web-dev-qa-db-fra.com

Comment puis-je ajouter les nouvelles puces Android dynamiquement dans Android?

J'ai une question de classe qui contient un tableau de balises String. J'essaierai de montrer chaque question dans une vue d'ensemble du recyclage en utilisant Kotlin et chaque étiquette de la nouvelle puce. Ces puces seront incluses dans chipGroup.

Ma question est.

Comment puis-je ajouter chaque élément de balise du tableau dans une nouvelle puce? J'essaie de le faire, mais cela ne fonctionne évidemment pas.

if (tags != null) {
    for (tag in tags) {
        val chip = Chip(itemView.context)
    }
}

Merci pour tout!

12
ramon guardia

Vous pouvez ajouter Chip de la même manière que tout autre ViewGroup comme ceci:

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

pour singleSelection n'oubliez pas d'ajouter à votre chipGroup:

chipGroup.isSingleSelection = true

ou en xml

app:singleSelection="true"

Bonne chance et bon codage!

31
kandroidj

J'ai toujours l'erreur suivante lorsque j'essaie de créer une nouvelle puce:

IllegalArgumentException: ce composant nécessite que vous spécifiiez un attribut Android: textAppearance valide

Cela pourrait être corrigé en gonflant un R.layout.chip Personnalisé avec la ligne suivante: Android:textAppearance="@style/TextAppearance.MaterialComponents.Chip"

1
Nicolai Weitkemper