我有像这样的Textview:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@{message.isSelf() ? @drawable/bubble_blue : @drawable/bubble_grey}"/>
message.isSelf()只是一个返回布尔值的公共方法。
但是,我在尝试编译时遇到了这个错误:
Error:(125, 141) error: incompatible types: Message cannot be converted to View
进入错误的源代码,这是生成的数据绑定
中的问题行var = ((messageIsSelf) ? (getDrawableFromResource(message, R.drawable.bubble_blue)) : (getDrawableFromResource(message, R.drawable.bubble_grey)));
方法getDrawableFromResource将View和drawable ID作为参数:
/** @hide */
protected static Drawable getDrawableFromResource(View view, int resourceId) {
if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) {
return view.getContext().getDrawable(resourceId);
} else {
return view.getResources().getDrawable(resourceId);
}
}
由于某种原因,我的消息对象被传递给方法而不是视图。我该如何解决?我尝试删除了构建文件夹,但仍然没有帮助。
答案 0 :(得分:0)
getDrawableFromResource(message, R.drawable.bubble_grey)));
在上面的方法中,您发送一个Message
对象(我假设message
是一个Message
对象),但该方法需要一个View
对象(根据代码)你提供)。这就是你得到这个错误的原因。
尝试使用@android:drawable
注释:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@{message.isSelf() ?
@android:drawable/bubble_blue :
@android:drawable/bubble_grey}"
/>
答案 1 :(得分:0)
事实证明它是因为我有一个“消息”对象和TextView的id定义为“消息”导致冲突。改变id解决了这个问题。