我想从android布局数据绑定中的接口常量中导入一些字符串。
如果我使用此行,Gradle构建失败
android:drawableRight="@{item.icon.equalsIgnoreCase(Constants.FOOD_TYPE_NON_VEG)? @drawable/ic_nonveg : @drawable/ic_veg}"
但在线下工作
android:drawableRight="@{item.icon.equalsIgnoreCase(`nonveg`)? @drawable/ic_nonveg : @drawable/ic_veg}"
示例xml是
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="Constants"
type="com.amelio.utils.Constants"/>
</data>
<TextView
style="@style/tvVerySmall"
android:layout_width="match_parent"
android:drawableRight="@{item.icon.equalsIgnoreCase(`nonveg`)? @drawable/ic_nonveg : @drawable/ic_veg}"
/>
</layout>
和Constants接口是
public interface Constants {
String FOOD_TYPE_NON_VEG = "nonveg";
}
如何在数据绑定中从xml布局中的接口导入字符串?
答案 0 :(得分:8)
使用import
,而不是variable
:
<data>
<import type="yourfullpackagepath.Constants"/>
</data>
答案 1 :(得分:1)
导入存在您的public
或internal
常量的类:
<data>
<import type="com.ananth.nasaphotooftheday.utility.Constant"/>
<variable
name="viewModel"
type="com.ananth.nasaphotooftheday.ui.main.MainViewModel" />
</data>
根据您的用途使用它,例如:
<ImageView
android:id="@+id/image_fullscreen"
android:layout_width="60dp"
android:layout_height="60dp"
android:src="@{(viewModel.media.type == Constant.MEDIA_TYPE_IMAGE) ? @drawable/ic_play : @drawable/ic_fullscreen}"
android:layout_marginEnd="@dimen/spacing_large" />