J'essaie d'utiliser l'opérateur et "&&" dans XML en utilisant la liaison de données Android,
android:visibility="@{(bean.currentSpaceId == bean.selectedSpaceId **&&** bean.currentSpaceId > 0)? View.VISIBLE: View.GONE}"
mais j'ai eu l'erreur de compilation:
Erreur: l'exécution a échoué pour la tâche «: app: dataBindingProcessLayoutsDevDebug». org.xml.sax.SAXParseException; systemId: fichier: /Users/path/app/build/intermediates/res/merged/dev/debug/layout/fragment_space.xml; lineNumber: 106; columnNumber: 89; Le nom de l'entité doit immédiatement suivre le «&» dans la référence de l'entité.
et erreur de surbrillance rouge dans le studio Android "caractère non échappé et ou non terminé".
Alors, comment dois-je résoudre ce problème?
Edit: trouvé la réponse, ces caractères doivent être échappés:
'&' --> '&'
'<' --> '<'
'>' --> '>'
la source
Réponses:
&&
doit être rendu comme&&
.Le guide officiel de liaison de données contient des exemples d'opérateurs de comparaison où ces entités XML sont utilisées, par exemple
Éditer
Les exemples d'expressions que j'ai mentionnés dans la réponse ont disparu de la version anglaise de la documentation depuis que cette réponse a été écrite. Ils survivent dans certaines versions non anglaises obsolètes de la documentation, comme la version espagnole.
Quoi qu'il en soit, la réponse d'origine est toujours valable, car l'utilisation d'entités XML dans XML est standard dans XML et n'a rien à voir avec Android lui-même.
la source
Liste des entités HTML
Vous ne pouvez pas utiliser & ou une autre entité HTML dans XML. Vous devez donc utiliser un caractère d'échappement.
Entités de caractères HTML souvent utilisées dans Android:
Voici une liste complète des entités HTML.
la source
Échapper à && dans le balisage de mise en page est une très mauvaise solution. Il est préférable de créer une méthode sur l'objet de modèle (vue):
la source
ObservableBoolean isAdult
La meilleure solution que j'ai pu trouver pour ce problème était l'introduction d'une nouvelle méthode de liaison.
Avant:
item_recyclerview.xml
:MyDataModelClass
: (qui se déroule dans mon modèle de vue)Après:
item_recyclerview.xml
:MyDataModelClass
: (qui se déroule dans mon modèle de vue)la source