Saya mencoba menggunakan operator dan "&&" di xml menggunakan penyatuan data Android,
android:visibility="@{(bean.currentSpaceId == bean.selectedSpaceId **&&** bean.currentSpaceId > 0)? View.VISIBLE: View.GONE}"
tapi saya mendapat kesalahan kompilasi:
Kesalahan: Eksekusi gagal untuk tugas ': app: dataBindingProcessLayoutsDevDebug'. org.xml.sax.SAXParseException; systemId: file: /Users/path/app/build/intermediates/res/merged/dev/debug/layout/fragment_space.xml; barisNomor: 106; kolomNomor: 89; Nama entitas harus segera mengikuti '&' di referensi entitas.
dan kesalahan sorotan merah di studio android "karakter yang tidak lolos & atau tidak dihentikan".
Jadi bagaimana saya harus memperbaikinya?
Sunting: temukan jawabannya, karakter ini perlu diloloskan:
'&' --> '&'
'<' --> '<'
'>' --> '>'
sumber
Jawaban:
&&
harus dirender sebagai&&
.Panduan pengikatan data resmi memiliki contoh operator perbandingan di mana entitas XML ini digunakan, misalnya
Sunting
Contoh ekspresi yang saya sebutkan dalam jawaban menghilang dari versi bahasa Inggris dari dokumen sejak jawaban ini ditulis. Mereka bertahan di beberapa dokumen versi non-Inggris yang sudah ketinggalan zaman seperti versi bahasa Spanyol.
Bagaimanapun, jawaban asli masih valid, karena penggunaan entitas XML dalam XML adalah standar dalam XML dan tidak ada hubungannya dengan Android itu sendiri.
sumber
Daftar entitas HTML
Anda tidak dapat menggunakan & atau entitas HTML lain dalam XML. Jadi Anda harus menggunakan karakter melarikan diri.
Entitas Karakter HTML yang sering digunakan di Android:
Berikut adalah daftar lengkap entitas HTML.
sumber
Melarikan diri && dalam mark-up tata letak adalah solusi yang sangat buruk. Lebih baik membuat metode pada objek model (view):
sumber
ObservableBoolean isAdult
Solusi terbaik yang dapat saya temukan untuk masalah ini adalah memperkenalkan metode Bindable baru.
Sebelum:
item_recyclerview.xml
:MyDataModelClass
: (yang diadakan di viewmodel saya)Setelah:
item_recyclerview.xml
:MyDataModelClass
: (yang diadakan di viewmodel saya)sumber