首页 > 解决方案 > 带有列表的 BindingAdapter

问题描述

我想使用带List参数的 BindingAdapter,但是当我尝试编译它时,它会抛出这个错误,

找不到接受参数类型“java.util.List<Alert>”的 <androidx.cardview.widget.CardView app:setVisiblityByList> 的设置器

我的方法:

@BindingAdapter("setVisibilityByList")
fun setVisibilityByList(view: View, l: List<*>?) {
if (l?.isNotEmpty() == true) {
    view.visibility = View.VISIBLE
} else {
    view.visibility = View.GONE
}

}

我的 XML:

<androidx.cardview.widget.CardView
            android:id="@+id/card_view_alert"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dp"
            android:layout_width="match_parent"
            android:visibility="gone"
            app:cardBackgroundColor="#77000000"
            app:cardCornerRadius="10dp"
            app:cardElevation="0dp"
            app:contentPadding="5dp"
            app:setVisiblityByList="@{locationAndWeather.alerts}">

我也尝试过fun setVisiblityByList(view: View, l: List<Alert>?)同样的结果。这似乎是Java的类型擦除引起的问题。有什么办法可以让它工作吗?

标签: androidkotlinandroid-databindingkotlin-android-extensionsandroid-binding-adapter

解决方案


推荐阅读