如何在 android 数据绑定中从 class 导入 public 静态字段
how to import public static field from class in android data binding
我想从 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>
常量接口是
public interface Constants {
String FOOD_TYPE_NON_VEG = "nonveg";
}
如何在数据绑定中从 xml 布局中的界面导入字符串?
使用import
,而不是variable
:
<data>
<import type="yourfullpackagepath.Constants"/>
</data>
在您的 public
或 internal
常量存在的地方导入 class:
<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" />
我想从 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>
常量接口是
public interface Constants {
String FOOD_TYPE_NON_VEG = "nonveg";
}
如何在数据绑定中从 xml 布局中的界面导入字符串?
使用import
,而不是variable
:
<data>
<import type="yourfullpackagepath.Constants"/>
</data>
在您的 public
或 internal
常量存在的地方导入 class:
<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" />