Khe*_*raj 2 data-binding android android-layout android-databinding
我想在android布局数据绑定中从接口常量导入一些字符串.
如果我使用此行,Gradle构建将失败
android:drawableRight="@{item.icon.equalsIgnoreCase(Constants.FOOD_TYPE_NON_VEG)? @drawable/ic_nonveg : @drawable/ic_veg}"
Run Code Online (Sandbox Code Playgroud)
但是线下工作
android:drawableRight="@{item.icon.equalsIgnoreCase(`nonveg`)? @drawable/ic_nonveg : @drawable/ic_veg}"
Run Code Online (Sandbox Code Playgroud)
样本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>
Run Code Online (Sandbox Code Playgroud)
和Constants接口是
public interface Constants {
String FOOD_TYPE_NON_VEG = "nonveg";
}
Run Code Online (Sandbox Code Playgroud)
如何在数据绑定中从xml布局中的接口导入字符串?
使用import,而不是variable:
<data>
<import type="yourfullpackagepath.Constants"/>
</data>
Run Code Online (Sandbox Code Playgroud)
public导入您的或internal常量所在的类:
<data>
<import type="com.ananth.nasaphotooftheday.utility.Constant"/>
<variable
name="viewModel"
type="com.ananth.nasaphotooftheday.ui.main.MainViewModel" />
</data>
Run Code Online (Sandbox Code Playgroud)
根据自己的用途使用,例如:
<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" />
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1932 次 |
| 最近记录: |