Android数据绑定到自定义视图

时间:2019-04-12 01:20:07

标签: android android-view android-livedata

我想做的是将实时数据传递到自定义视图

我想做什么:

<com.mastherhealth.masterbilling.views.DashboardCard
    android:layout_height="@dimen/dashboard_card_size"
    android:layout_width="@dimen/dashboard_card_size"
    android:layout_marginTop="@dimen/dashboard_card_margin"
    android:layout_marginBottom="@dimen/dashboard_card_margin"
    android:layout_marginStart="@dimen/dashboard_card_center_margin"
    android:layout_marginEnd="@dimen/dashboard_card_center_margin"
    app:layout_constraintTop_toBottomOf="@+id/dashboard_doctor_spinner"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:cardCornerRadius="10dp"
    app:cardBackgroundColor="@color/colorPrimaryDark"
    app:name="Saved"
    app:number="@{`` + viewModel.savedClaimsLiveData}"/>

viewModel.saveClaimsLiveData是一个LiveData,我将从存储库中获取它。

我的 attrs.xml

<resources>
    <declare-styleable name="DashboardCard">
        <attr name="name" format="string"/>
        <attr name="fontAwesome" format="string"/>
        <attr name="number" format="string"/>
    </declare-styleable>
</resources> 

我有一个DashboardCard类,该类扩展了CardView,并按照我希望它们的外观设置名称和编号。

我目前正在

****/ data binding error ****msg:Cannot find the setter for attribute 'app:number' with parameter type java.lang.String on com.mastherhealth.masterbilling.views.DashboardCard.

1 个答案:

答案 0 :(得分:0)

您需要为自定义属性添加BindingAdapter

@BindingAdapter("number")
fun bindNumber(view: View, number: String) {
    // ...
}