我正试图通过点击其内容动态显示和隐藏一个expandleMenu。
<LinearLayout
android:id="@+id/expandableMenu"
android:visibility='@{vm.isShow? View.VISIBLE : View.GONE}'
style="@style/LinearVerticalNoPadding">
它工作完美,但如果我想使用它作为双向绑定。出现错误。android:visiblity='@={isShow? View.VISIBLE : View.GONE}'
表达式'((isShow) ?(android.view.View.VISIBLE): (android.view.View.GONE))'不能反转,所以它不能用于双向绑定
android:visibility='@={vm.showMenu, default=gone}'
因此,我决定将可见性直接与Int
类型绑定,而不是Boolean
。But It says
无法找到<android.widget的getter。LinearLayout>接受参数类型'int'
是否有一种合适的方法来绑定可见性与2ways绑定?
双向数据绑定不能与三元操作符一起工作,因为双向数据绑定不仅将变量值映射到xml,而且还将xml值存储回变量中,因此要使以下语句工作
android:visiblity='@={isShow? View.VISIBLE : View.GONE}
您需要删除三元操作符,例如:
android:text="@={model.name}"
或
android:checked="@={viewmodel.rememberMe}"
详细研究https://developer.android.com/topic/libraries/data-binding/two-way