我正在尝试使用数据绑定设置visibility
的{{1}}和src
。我不知道为什么会出现此错误,而且我确实相信这在某一时刻起作用,但是我可能是错的。
布局:
ImageView
数据类
<data>
<import type="android.view.View" />
<import type="android.support.v4.content.ContextCompat" />
<variable
name="viewData"
type="com.myapp.SomethingViewData" />
</data>
...
<ImageView
...
android:src="@{ContextCompat.getDrawable(context, viewData.getIconResource())}"
android:visibility="@{viewData.getIconVisibility() ? View.VISIBLE : View.GONE}" />
错误消息:
@Parcelize
data class SomethingViewData(val iconResource: Int,
val iconVisibility: Boolean) : Parcelable
这是什么意思,我该如何解决?
答案 0 :(得分:8)
我遇到了同样的错误,并在以下网站的帮助下解决了该问题:https://codelabs.developers.google.com/codelabs/android-databinding/#2
我需要将ConstraintLayout转换为数据绑定布局,如本网站上的图片所示:
也许这会帮助某人!
答案 1 :(得分:1)
哇,所以,从我的应用程序模块build.gradle文件中删除了dataBinding { enabled = true }
。加回去,一切都像以前一样工作。
答案 2 :(得分:0)
您的“ getIconVisibility”返回一个整数,但是android:visibility
(在XML文件中)需要一个枚举值:Visibility.Gone |可见性。可见性不可见
答案 3 :(得分:0)
尝试在
src
和visibility
中使用单引号
android:src='@{ContextCompat.getDrawable(context, viewData.getIconResource())}'
android:visibility='@{viewData.getIconVisibility() ? View.VISIBLE : View.GONE}'
答案 4 :(得分:0)
在我的情况下,缺少一个右括号导致此错误为我弹出-我有:
android:visibility="@{moment.state == State.COMPLETE ? View.GONE : View.VISIBLE"
代替:
android:visibility="@{moment.state == State.COMPLETE ? View.GONE : View.VISIBLE}"