如何从android数据绑定中的类导入公共静态字段

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布局中的接口导入字符串?

Ala*_*opf 9

使用import,而不是variable:

<data>
    <import type="yourfullpackagepath.Constants"/>
</data>
Run Code Online (Sandbox Code Playgroud)

  • 以及如何使用它? (2认同)

Ana*_*nth 5

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)