Android数据绑定-如何为ImageView设置contentDescription和src

时间:2018-07-20 22:04:05

标签: android android-databinding

我正在尝试通过以下方式设置contentDescription

        <ImageView
        android:id="@+id/accountType"
        android:layout_width="48dp"
        android:layout_height="48dp"
        android:contentDescription="@{() -> account.getContentDescription()}"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:srcCompat="@mipmap/ic_launcher" />

我的帐户类别:

data class Account(
    val id: Long = 0L,
    val title: String,
    val accountType: AccountType,
    val balance: Double = 0.0
) {
fun getAccountTypeDrawable() =
        when (accountType) {
            AccountType.CHECKING_ACCOUNT -> R.drawable.ic_account_balance_black_48dp
            AccountType.WALLET -> R.drawable.ic_local_atm_black_48dp
            AccountType.SAVINGS_ACCOUNT -> R.drawable.ic_package_black_48dp
            AccountType.INVESTMENT -> R.drawable.ic_trending_up_black_48dp
            AccountType.OTHER -> R.drawable.ic_lens_black_48dp
        }

fun getContentDescription(view: View) =
        view.context.resources.getStringArray(R.array.account_type)[accountType.ordinal]!!
}

我收到此错误:

  

e:[kapt]发生了异常:android.databinding.tool.util.LoggedErrorException:发现了数据绑定错误。   **** /数据绑定错误**** msg:找不到适用于android:contentDescription的正确回调类。尝试使用java.lang.CharSequence但它有4个抽象方法,应该有1个抽象方法。   文件:C:\ Users \ Douglas \ AndroidStudioProjects \ Currency \ app \ src \ main \ res \ layout \ item_account.xml   loc:23:42-23:78   **** \数据绑定错误****

如果我像这样直接在xml中设置,它将按预期工作:

android:contentDescription="@{context.getResources().getStringArray(R.array.account_type)[account.accountType.ordinal]}"

但是我在Account类中创建了该方法,以避免一直这样做。

如何使用Account类中的方法为contentDescription设置app:srcCompatImageView

1 个答案:

答案 0 :(得分:0)

您可以直接使用上下文:

android:contentDescription="@{account.getContentDescription(context)}"